Python无法从SharePoint正确下载.xlsx文件求助
问题原因
- GET请求里带了
data=payload参数,虽然是GET请求,但这个参数会让requests给请求附加请求体,不符合HTTP GET规范,Graph API因此返回错误的XML响应,而非目标Excel文件内容。 - 直接打印
response.text会把二进制的Excel文件当作文本解析,要么出现乱码,要么显示那堆错误XML。
修正后的代码
import requests url = "https://graph.microsoft.com/v1.0/sites/{siteid}/drives/{driveid}/items/{fileid}/content" headers = { 'Authorization': f'Bearer {Token}' } # GET请求不需要传data参数,直接发送请求 response = requests.get(url, headers=headers) if response.status_code == 200: # 以二进制模式写入文件,保证Excel格式正确 with open("downloaded_file.xlsx", "wb") as f: f.write(response.content) print("文件下载成功") else: print(f"请求失败,状态码: {response.status_code}") print(response.text) # 此处可查看具体错误信息
关键注意点
- 删除
data=payload:GET请求不需要请求体,添加该参数会导致请求格式异常,Graph API无法正确识别你的下载意图。 - 使用
response.content获取数据:Excel是二进制文件,response.content会返回原始二进制数据,而response.text会按文本编码解析,必然导致内容异常。 - 二进制模式保存文件:打开文件时用
wb模式,确保二进制数据完整写入,避免文件损坏无法打开。
内容的提问来源于stack exchange,提问作者Jordan K
相关产品推荐
相关产品推荐

