如何使用Python下载SharePoint中文件名含动态dd.mm.yyyy格式日期的文件
解决方案
核心思路
不要直接在URL中使用通配符,SharePoint接口不支持这种调用方式。正确流程是先拉取目标文件夹下的所有文件列表,再通过正则匹配符合日期格式的目标文件,最后生成下载链接即可。
实现步骤
- 步骤1:调用SharePoint接口拉取目标文件夹下的全部文件名列表
- 步骤2:用正则匹配文件名中
dd.mm.yyyy格式的日期,可额外增加日期合法性校验,避免匹配到无效格式字符串 - 步骤3:匹配到目标文件后拼接完整URL,调用原有下载逻辑即可
完整代码示例
import re from datetime import datetime # 初始化SP对象,原有逻辑不变 sp = da_tran_SP365( site_url = xxxxxx, client_id = xxxxx, client_secret = xxxxx ) # 1. 获取目标文件夹下的所有文件名 # 注意:此处方法名需和你使用的da_tran_SP365库提供的方法一致,如方法名不同可替换为对应拉取文件列表的方法 file_list = sp.list_files(folder_path='/sites/myfolder') # 2. 正则匹配符合格式的目标文件 target_file = None latest_date = None # 如果实际文件名是下划线连接,把正则里的空格换成_即可 date_pattern = r'^Filename (\d{2}\.\d{2}\.\d{4})\.xlsx$' for file_name in file_list: match_res = re.match(date_pattern, file_name) if match_res: # 校验日期合法性,避免匹配到32.13.9999这类无效日期 date_str = match_res.group(1) try: file_date = datetime.strptime(date_str, '%d.%m.%Y') # 如果存在多个符合格式的文件,默认取日期最新的,不需要该逻辑可直接赋值target_file后break if not latest_date or file_date > latest_date: latest_date = file_date target_file = file_name except ValueError: # 日期格式不合法直接跳过 continue if not target_file: raise Exception("未找到符合格式的目标文件") # 3. 拼接URL生成下载路径 download_url = f'https://mysite.sharepoint.com/:x:/r/sites/myfolder/{target_file}' download_path = sp.create_link(download_url)
内容的提问来源于stack exchange,提问作者dfpaezo
相关产品推荐
相关产品推荐

