
本文介绍使用python的os.walk()遍历多层目录结构,自动将每个operator子目录下的pdf文件重命名为“operator0.pdf”“operator1.pdf”等格式,无需手动切换路径,安全高效地完成批量重命名任务。
在处理大量分散于多级子目录(如 C:\State\County\Operator\)中的PDF文件时,手动逐个进入Operator文件夹执行重命名不仅低效,还极易出错。理想方案是编写一个可递归识别所有Operator级子目录、并在每个目录内独立编号重命名PDF文件的脚本。
核心思路是利用 os.walk() 深度遍历目录树,精准定位到目标层级(即包含PDF文件的Operator文件夹),然后对每个目录内的PDF文件进行独立计数重命名——注意:不是全局连续编号(Operator0, Operator1, … Operator1000),而是每个Operator文件夹内都从 Operator0.pdf 开始重新计数,这正符合原始需求。
以下是推荐的完整实现代码:
import os
root_dir = r"C:\State\County" # ✅ 替换为你的实际根路径(建议使用原始字符串 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系统。
✅ 执行前建议:
- 备份原始数据(重要!);
- 在测试目录中创建小型模拟结构验证脚本;
- 若需自定义前缀(如用实际Operator名称替代“Operator”),可进一步解析 dirpath 获取父级目录名,但当前方案已完美匹配原始需求。
该方法彻底摆脱了手动切换路径的繁琐,一行代码驱动全量自动化,兼顾准确性、可读性与工程安全性。










