如何使用Python 3无需认证从SharePoint下载公开文件
SharePoint的公开共享链接(如你提供的https://XXXX.sharepoint.com/:x:/s/YYYY/ZZZZ?e=KKKK)默认是网页预览链接,无法直接用下载工具获取文件。你需要先将其转换为直接下载链接,再用Python完成下载,具体步骤如下:
1. 转换共享链接为直接下载链接
将原链接中的:x:替换为:u:,并在链接末尾添加&download=1,即可得到直接下载地址:
- 原链接:
https://XXXX.sharepoint.com/:x:/s/YYYY/ZZZZ?e=KKKK - 转换后:
https://XXXX.sharepoint.com/:u:/s/YYYY/ZZZZ?e=KKKK&download=1
2. Python实现下载
以下提供两种无需额外认证的下载方案,按需选择:
方案一:使用requests库(推荐)
如果未安装requests,先执行安装命令:
pip install requests
下载代码示例:
import requests # 替换为你的SharePoint公开共享链接 sharepoint_url = "https://XXXX.sharepoint.com/:x:/s/YYYY/ZZZZ?e=KKKK" # 转换为直接下载链接 download_url = sharepoint_url.replace(":x:", ":u:") + "&download=1" # 流式下载大文件(避免内存占用过高) try: response = requests.get(download_url, stream=True) response.raise_for_status() # 捕获请求异常 # 自定义保存的文件名(注意替换为对应文件后缀) with open("downloaded_file.pdf", "wb") as file: for chunk in response.iter_content(chunk_size=8192): file.write(chunk) print("文件下载完成") except requests.exceptions.RequestException as e: print(f"下载失败:{e}")
方案二:使用Python内置urllib库
无需额外安装依赖,直接使用:
import urllib.request sharepoint_url = "https://XXXX.sharepoint.com/:x:/s/YYYY/ZZZZ?e=KKKK" download_url = sharepoint_url.replace(":x:", ":u:") + "&download=1" try: # 下载并保存文件(第二个参数为保存的文件名) urllib.request.urlretrieve(download_url, "downloaded_file.pdf") print("文件下载完成") except Exception as e: print(f"下载失败:{e}")
注意事项
- 若转换后的链接仍无法下载,需确认该文件确实设置为完全公开访问(无组织或用户限制),否则仍需认证才能获取。
- 保存文件名需对应文件实际格式(如
.pdf、.docx等),可根据原文件类型调整。
内容的提问来源于stack exchange,提问作者eilon toledano
相关产品推荐
相关产品推荐

