You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 15:20:32