批量重命名文件可用 Python 的 os.rename() 或 pathlib.Path.rename() 实现,需先解析原名信息、定义新规则、安全预览再执行;示例脚本按创建时间 + 序号重命名。jpg 文件。

批量重命名文件用 Python 实现,核心是 os.rename() 或 pathlib.Path.rename(),配合循环和字符串处理即可完成自动化解析与重命名。关键在于:明确原始文件名规律、定义新命名规则、安全预览、再执行。
识别并提取原始文件信息
多数批量重命名需从旧名中“解析”有用信息,比如日期、编号、类型标识等。常用方法:
- 用 str.split() 拆分下划线 / 短横 / 空格分隔的字段(如
"IMG_20231005_001.jpg"→ 提取"20231005"和"001") - 用 re.search() 匹配复杂模式(如从
"report_v2_final_2024-03-15.pdf"中提取"2024-03-15") - 用 pathlib.Path.stem 获取无后缀的主文件名,避免手动切后缀
构造规范的新文件名
命名规则要清晰、可读、可排序。常见策略:
- 统一前缀 + 解析出的日期 + 序号(如
f"photo_20231005_{i:03d}.jpg") - 按类型归类重命名:
"log_" + 日期 + "_" + 序号 - 保留原扩展名:
new_name = f"{clean_base}.{old_path.suffix.lstrip('.')}" - 避免非法字符(
/ : * ? "|),可用re.sub(r'[^w.-]','_', name)清洗
安全执行:先预览,再重命名
误操作可能造成文件丢失或混乱,务必分两步:
立即学习 “Python 免费学习笔记(深入)”;
- 第一步:遍历所有目标文件,打印「旧名 → 新名」映射,人工核对 2–3 个是否符合预期
- 第二步:确认无误后,再调用
old_path.rename(new_path);建议加try……except捕获权限或重名错误 - 可选:添加
--dry-run参数控制是否真实执行(用argparse实现)
完整轻量示例(按创建日期 + 序号重命名)
以下脚本将当前目录下所有 .jpg 文件,按文件创建时间升序,重命名为 img_20231005_001.jpg 格式:
from pathlib import Path import time folder = Path(".") jpgs = sorted(folder.glob("*.jpg"), key=lambda p: p.stat().st_ctime)
for i, old_path in enumerate(jpgs, 1): ctime = time.localtime(old_path.stat().st_ctime) date_str = time.strftime("%Y%m%d", ctime) newname = f"img{datestr}{i:03d}{old_path.suffix}" new_path = old_path.parent / new_name print(f"→ {old_path.name} → {new_name}")
取消下一行注释才真正执行
# old_path.rename(new_path)