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

Python自动化:按文件名8位编码归类文件的需求与实现问询

自动化整理PDF文件:按编码创建文件夹并归类文件

我手头有一批PDF文件,命名格式为JasperReports - XXXXXXXX-ITR-2022-ORIGI-Recibo.pdf(其中XXXXXXXX是8位唯一编码),每个编码对应一组关联文件。我需要实现自动化流程:提取文件名中的8位编码,用该编码创建文件夹,再把对应编码的所有文件移入其中。目标文件夹里有400多个不同编码的文件,我刚接触Python,已经写了部分代码,想请教如何完成这个自动化功能。

文件示例

JasperReports - 14000369-ITR-2022-ORIGI-Recibo.pdf
JasperReports - 14000369-ITR-2022-ORIGI-Declaracao.pdf
JasperReports - 13079980-ITR-2022-ORIGI-Recibo.pdf
JasperReports - 13079980-ITR-2022-ORIGI-Declaracao.pdf

现有代码片段

from importlib.resources import path
import os
import os.path
from pathlib import Path
caminho = r"C:\Users\amanda.regina.PROCONT\Desktop\move\itr"
lista_arquivos = os.listdir(caminho)

for arquivo in lista_arquivos:
    print(arquivo)
#lista_arquivos = os.listdir(caminho+"\itr")
path = Path(caminho)
for arquivo_nome in path.glob('*13079980*'):
    print(arquivo_nome)

完整解决方案代码

import os
from pathlib import Path

# 目标文件夹路径
caminho = r"C:\Users\amanda.regina.PROCONT\Desktop\move\itr"
pasta_alvo = Path(caminho)

# 遍历文件夹下所有PDF文件
for arquivo in pasta_alvo.glob("*.pdf"):
    # 仅处理文件,跳过子文件夹
    if arquivo.is_file():
        # 拆分文件名提取编码
        partes_nome = arquivo.name.split("-")
        # 编码位于拆分后的第2个元素,去除前后空格
        codigo = partes_nome[1].strip()
        # 校验编码格式:8位数字
        if len(codigo) == 8 and codigo.isdigit():
            # 构建编码对应的文件夹路径
            pasta_codigo = pasta_alvo / codigo
            # 文件夹不存在则创建
            if not pasta_codigo.exists():
                pasta_codigo.mkdir()
            # 移动文件到对应文件夹
            arquivo.rename(pasta_codigo / arquivo.name)

代码说明

  • 用Path.glob("*.pdf")精准遍历PDF文件,避免处理无关类型文件
  • 通过split("-")拆分文件名,提取中间的8位编码,用strip()清除编码前后的空格
  • 增加编码格式校验,确保只处理符合规则的文件,避免错误命名文件干扰流程
  • 先检查目标文件夹是否存在,不存在则自动创建,再通过rename()完成文件移动

内容的提问来源于stack exchange,提问作者Lumiere

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:57:25