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

如何用Python直接将Pandas DataFrame上传至SharePoint(无本地存储)

问题:Python直接上传Pandas DataFrame至SharePoint无报错但失败

已知情况:

  • 脚本可正常创建SharePoint目录/文件夹,认证流程无问题
  • 相对URL已验证正确,此前用该URL成功创建过目录
  • df1为待上传数据的DataFrame
  • 代码运行无报错,但SharePoint中未出现上传的文件

原代码:

site_url = 'https://{Name}.sharepoint.com/sites/{SiteName}'
relative_url = f'Documents/Shared Documents/test'

context = ClientContext(site_url).with_credentials(ClientCredential(sharepoint_clientID, sharepoint_clientSecret))


try:
    target_folder = context.web.get_folder_by_server_relative_url(relative_url)

    buffer = BytesIO() 
    df1.to_csv(buffer, index=False) 
    buffer.seek(0) 
    file_content = buffer.read() 
    file_name = 'test.csv'
    target_folder.upload_file(file_name, file_content).execute_query()

except Exception as e:
        print('Problem uploading to Sharepoint: ', e)

排查与修复方案

  1. 修正文件夹路径定位逻辑
    原代码直接用相对路径获取文件夹可能存在前缀缺失问题,建议通过文档库标题定位后再获取文件夹,确保路径准确:

    # 替换原target_folder获取代码
    doc_lib = context.web.get_list_by_title("Shared Documents")
    target_folder = doc_lib.root_folder.folders.get_by_url("test")
    context.load(target_folder)
    context.execute_query()  # 验证文件夹存在
    
  2. 验证BytesIO内容完整性
    在上传前确认buffer中的CSV数据正常,避免数据为空或格式错误:

    buffer = BytesIO()
    df1.to_csv(buffer, index=False)
    buffer.seek(0)
    # 打印前几行确认数据
    print(buffer.readline().decode('utf-8'))
    buffer.seek(0)  # 重置指针后再执行上传
    
  3. 显式加载并验证文件夹
    原代码未加载文件夹对象就执行上传,可能路径错误但未触发异常,添加加载步骤:

    target_folder = context.web.get_folder_by_server_relative_url(relative_url)
    context.load(target_folder)
    context.execute_query()  # 确认文件夹存在后再上传
    
  4. 直接传入BytesIO对象上传
    尝试跳过read()步骤,直接将BytesIO对象传入upload_file,避免指针操作可能导致的问题:

    buffer = BytesIO()
    df1.to_csv(buffer, index=False)
    buffer.seek(0)
    target_folder.upload_file(file_name, buffer).execute_query()
    

内容的提问来源于stack exchange,提问作者Aidan Goldie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:25:09