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
相关产品推荐
相关产品推荐

