如何批量重命名多级子目录中的PDF文件(以所在操作员文件夹名为前缀)

5次阅读

如何批量重命名多级子目录中的PDF文件(以所在操作员文件夹名为前缀)

本文介绍使用python的os.walk()遍历多层目录结构,自动将每个operator子目录下的pdf文件重命名为“operator0.pdf”“operator1.pdf”等格式,无需手动切换路径,安全高效地完成批量重命名任务。

在处理大量分散于多级子目录(如 C:StateCountyOperator)中的PDF文件时,手动逐个进入Operator文件夹执行重命名不仅低效,还极易出错。理想方案是编写一个可递归识别所有Operator级子目录、并在每个目录内独立编号重命名PDF文件的脚本。

核心思路是利用 os.walk() 深度遍历目录树,精准定位到目标层级(即包含PDF文件的Operator文件夹),然后对每个目录内的PDF文件进行独立计数重命名——注意:不是全局连续编号(Operator0, Operator1, … Operator1000),而是每个Operator文件夹内都从 Operator0.pdf 开始重新计数,这正符合原始需求。

以下是推荐的完整实现代码:

import os  root_dir = r"C:StateCounty"  # ✅ 替换为你的实际根路径(建议使用原始字符串 r"" 避免转义问题)  for dirpath, dirnames, filenames in os.walk(root_dir):     # 关键判断:仅处理路径末尾为 "Operator" 的目录(确保精准定位目标文件夹)     if os.path.basename(dirpath) == "Operator":         print(f"Processing Operator folder: {dirpath}")         for count, f in enumerate(filenames):             if f.lower().endswith(".pdf"):  # 更健壮:兼容 .PDF/.Pdf 等大小写                 old_path = os.path.join(dirpath, f)                 new_name = f"Operator{count}.pdf"                 new_path = os.path.join(dirpath, new_name)                  # ⚠️ 安全提示:首次运行前务必启用此打印预览,确认重命名逻辑无误                 print(f"  → Renaming '{f}' → '{new_name}'")                  # 实际执行重命名(确认无误后取消下方注释)                 # os.rename(old_path, new_path)

? 关键说明与最佳实践:

  • 精准定位:通过 os.path.basename(dirpath) == “Operator” 过滤,避免误操作County或State等上级目录中的文件;
  • 大小写兼容:使用 f.lower().endswith(“.pdf”) 处理非标准扩展名;
  • 安全第一:代码默认仅打印预览(不执行重命名)。请先运行一次检查输出是否符合预期,确认无误后再取消 os.rename(…) 行的注释;
  • 独立编号:enumerate 在每个Operator目录内单独计数,天然实现“每文件夹从0开始”;
  • 路径健壮性:使用 os.path.join() 拼接路径,兼容windows/linux/macOS系统。

✅ 执行前建议:

  1. 备份原始数据(重要!);
  2. 在测试目录中创建小型模拟结构验证脚本;
  3. 若需自定义前缀(如用实际Operator名称替代“Operator”),可进一步解析 dirpath 获取父级目录名,但当前方案已完美匹配原始需求。

该方法彻底摆脱了手动切换路径的繁琐,一行代码驱动全量自动化,兼顾准确性、可读性与工程安全性。

text=ZqhQzanResources