You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从SharePoint读取CSV到DataFrame并重新上传为CSV的方法求助

上传文件到SharePoint的几种标准实现方法

一、使用SharePy上传

如果已经能用SharePy读取数据,上传时需先获取请求验证令牌,并正确构造上传请求:

import sharepy

# 初始化连接(能正常读取数据的话这步无需改动)
s = sharepy.connect("你的SharePoint站点URL")

# 获取X-RequestDigest令牌
digest_url = "你的SharePoint站点URL/_api/contextinfo"
digest_response = s.post(digest_url)
request_digest = digest_response.json()["FormDigestValue"]

# 配置上传参数
本地文件路径 = "local-file.txt"
上传接口URL = "你的SharePoint站点URL/_api/web/GetFolderByServerRelativeUrl('Shared%20Documents')/Files/add(url='uploaded-file.txt', overwrite=true)"

# 执行上传
with open(本地文件路径, "rb") as f:
    headers = {
        "X-RequestDigest": request_digest,
        "Content-Type": "application/octet-stream"
    }
    response = s.post(上传接口URL, data=f, headers=headers)

# 验证结果
if response.status_code == 200:
    print("上传成功")
else:
    print(f"上传失败,状态码:{response.status_code}")

二、使用Office365-REST-Python-Client(推荐)

这个库对SharePoint操作封装更完善,官方支持性更强:

  1. 安装依赖:
pip install office365-rest-python-client
  1. 上传代码示例:
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.user_credential import UserCredential

# 配置信息
站点URL = "你的SharePoint站点URL"
用户名 = "你的账号"
密码 = "你的密码"
文档库名称 = "Shared Documents"
本地文件路径 = "local-file.txt"
远程文件名 = "uploaded-file.txt"

# 初始化上下文
ctx = ClientContext(站点URL).with_credentials(UserCredential(用户名, 密码))

# 获取目标文件夹并上传文件
目标文件夹 = ctx.web.get_folder_by_server_relative_url(文档库名称)
with open(本地文件路径, "rb") as f:
    目标文件夹.upload_file(远程文件名, f).execute_query()

print("上传完成")

三、使用Microsoft Graph API + Requests

适合需要更灵活控制的场景,需先获取Access Token:

import requests

# 配置信息
租户ID = "你的租户ID"
客户端ID = "你的客户端ID"
客户端密钥 = "你的客户端密钥"
站点ID = "你的SharePoint站点ID"
驱动器ID = "文档库对应的驱动器ID(可通过Graph API查询,或用默认值'documents')"
本地文件路径 = "local-file.txt"
远程文件路径 = "/Shared Documents/uploaded-file.txt"

# 获取Access Token
token_url = f"https://login.microsoftonline.com/{租户ID}/oauth2/v2.0/token"
token_data = {
    "grant_type": "client_credentials",
    "client_id": 客户端ID,
    "client_secret": 客户端密钥,
    "scope": "https://graph.microsoft.com/.default"
}
token_response = requests.post(token_url, data=token_data)
access_token = token_response.json()["access_token"]

# 执行上传
upload_url = f"https://graph.microsoft.com/v1.0/sites/{站点ID}/drives/{驱动器ID}/root:{远程文件路径}:/content"
headers = {
    "Authorization": f"Bearer {access_token}"
}

with open(本地文件路径, "rb") as f:
    response = requests.put(upload_url, headers=headers, data=f)

if response.status_code in [200, 201]:
    print("上传成功")
else:
    print(f"上传失败:{response.text}")

内容的提问来源于stack exchange,提问作者Hugo Rechatin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:20:27