python批量重命名文件需遵循“批量+规则+安全”原则:先明确规则(序号/时间/关键词提取),用正则预验证,统一处理中文与特殊字符,保留扩展名;必须实现预览模式(如–dry-run)、pathlib路径操作、冲突检测、存在性检查及轻量日志备份。

重命名大量文件,核心是“批量+规则+安全”,Python用os和pathlib就能稳稳搞定,关键不在写代码,而在设计好规则、预览机制和防误操作逻辑。
明确重命名规则,先写清楚再写代码
别一上来就敲os.rename()。先想清楚:是按序号(如photo_001.jpg)、按时间(20240520_1432_IMG1234.jpg)、还是提取原名关键词(把截图-2024-05-18-下午2.30.15.png变成screen_20240518_1430.png)?规则越具体,脚本越可靠。
- 用正则表达式提取/替换时,先在
repl.it或regex101.com里验证模式 - 涉及中文、空格、特殊符号的文件名,统一转为下划线或短横线,避免后续脚本或系统兼容问题
- 保留原始扩展名,除非明确要批量转格式(如全部转
.jpg)
务必加预览模式,拒绝“一键毁所有”
真正健壮的脚本,运行前必须打印出“将要怎么改”,让用户确认。这不是多此一举,而是防止手抖选错目录或规则写崩。
- 添加
--dry-run参数(用argparse),开启后只打印变更列表,不执行重命名 - 输出格式建议:
old → new,每行一条,带序号,便于快速核对 - 若发现几十个文件都映射到同一个新名字(比如全变成
file.jpg),说明规则有冲突,立刻中止
用pathlib代替os.path,代码更清晰少出错
pathlib是Python 3.4+推荐的路径操作方式,对象化操作读起来像自然语言,也自动处理跨平台路径分隔符问题。
立即学习“Python免费学习笔记(深入)”;
- 获取当前目录下所有JPG文件:
list(Path(".").glob("*.jpg")) - 构造新路径:
new_path = file.parent / f"IMG_{i:03d}{file.suffix}" - 检查目标文件是否已存在,避免覆盖:
if not new_path.exists(): ...
加一层简单备份或撤销能力,心理更有底
对重要文件夹,可选生成一个轻量级“重命名日志”(csv或TXT),记录旧名→新名→时间戳。不需要备份整个文件,但万一出错,5分钟就能手动还原。
- 日志内容示例:
2024-05-20 14:22:03,report_v1.pdf,report_20240520.pdf - 进阶可加
--undo参数,读取日志反向恢复(注意:仅适用于单次连续执行且无中间改动) - 敏感操作前加一句提示:⚠️ 即将重命名 137 个文件,确认请输 yes:
基本上就这些。不复杂,但容易忽略预览和路径安全——写完跑一次--dry-run,比调试三小时强得多。