能否直接读取MS Teams的文件/目录到Jupyter Notebook?
直接在Jupyter Notebook读取MS Teams文件的实现方案
核心逻辑
MS Teams的文件板块底层存储于关联的SharePoint/OneDrive for Business站点,无需下载到本地,可直接通过API拉取文件二进制流,直接传入pandas解析即可。
前置准备
安装所需依赖库:
pip install pandas openpyxl office365-rest-python-client
配置信息获取
打开Teams中目标文件,点击右上角「...」→ 选择「在浏览器中打开」,从浏览器地址栏提取两个核心信息:
- SharePoint站点URL:格式为
https://<企业域名>.sharepoint.com/sites/<Teams对应站点名> - 文件的服务器相对路径:格式为
/sites/<Teams对应站点名>/Shared Documents/<Teams内的文件夹层级>/Core Design.xlsm
代码实现
替换你原有的本地读取代码为以下内容,原有read_excel的参数可以完全复用:
import pandas as pd from io import BytesIO from office365.runtime.auth.user_credential import UserCredential from office365.sharepoint.client_context import ClientContext # 替换为你自己的配置信息 SHAREPOINT_SITE_URL = "https://你的企业域名.sharepoint.com/sites/你的Teams站点名" FILE_RELATIVE_PATH = "/sites/你的Teams站点名/Shared Documents/project opportunity/Part1/AI/Input Design Work/Core Design.xlsm" USER_ACCOUNT = "你的企业办公邮箱" USER_PASSWORD = "你的办公账号密码" # 初始化SharePoint连接 ctx = ClientContext(SHAREPOINT_SITE_URL).with_credentials(UserCredential(USER_ACCOUNT, USER_PASSWORD)) # 拉取文件二进制流 file_content = ctx.web.get_file_by_server_relative_url(FILE_RELATIVE_PATH).download().execute_query() file_stream = BytesIO(file_content.content) # 直接解析Excel,参数和你本地读取的配置完全一致 df = pd.read_excel( file_stream, sheet_name="Allowance Plans", skiprows=9, engine="openpyxl" )
可选扩展
如果需要批量读取指定文件夹下的所有Excel文件,可调用ctx.web.get_folder_by_server_relative_url获取文件夹下的所有文件列表,循环拉取流解析即可,自动同步所有新增文件,无需手动操作。
注意事项
- 若账号开启了多因素认证(MFA),可替换为Azure AD应用注册的客户端ID+密钥方式认证,无需使用账号密码
- 读取xlsm格式必须指定
engine="openpyxl",否则会出现解析报错 - 路径层级需和SharePoint内的实际存储路径完全一致,不要遗漏
Shared Documents根节点
内容的提问来源于stack exchange,提问作者noobmaster
相关产品推荐
相关产品推荐

