PDF文件名末尾数字可变时,按指定片段建文件夹移文件的脚本优化需求
解决方案
核心问题是原脚本依赖固定后缀字符串匹配,没法应对文件名末尾的可变数字。改用正则表达式提取文件名中的目标编号片段,就能统一处理同编号的所有文件。
修改后的脚本
import os import glob import shutil import re # 匹配文件名开头的P(可选下划线)+数字的正则 pattern = re.compile(r'^P[_]?(\d+)') for file in glob.glob("*.pdf"): # 提取目标编号 match = pattern.match(file) if not match: continue # 跳过不符合格式的文件 folder_name = match.group(1) folder_path = os.path.join(os.getcwd(), folder_name) # 文件夹不存在才创建 if not os.path.exists(folder_path): os.makedirs(folder_path) # 移动文件到对应文件夹 shutil.move(file, os.path.join(folder_path, file))
脚本说明
- 正则
^P[_]?(\d+):精准匹配文件名开头的P,后面可以跟下划线_也可以直接跟数字,捕获的(\d+)就是我们需要的文件夹名(比如9883231、1235567)。 os.path.join:替代硬编码的路径拼接,避免跨系统路径分隔符问题。- 先检查文件夹是否存在再创建:避免同一编号的多个文件重复创建文件夹导致报错。
- 跳过不符合格式的文件:防止非目标PDF文件干扰脚本执行。
效果验证
针对你给出的示例文件:
P_9883231_V1_A0V0_T07-54-369-664_S00001.pdf和P_9883231_V1_A0V0_T07-54-369-664_S00002.pdf会被提取到编号9883231,移动到9883231文件夹。P1235567_V1_A0V0_T07-54-369-664_S00001.pdf会被提取到编号1235567,移动到1235567文件夹。
内容的提问来源于stack exchange,提问作者Gabriel Passos
相关产品推荐
相关产品推荐

