用 Python 写一个批量重命名文件的小工具

举报
yd_239248698 发表于 2026/11/07 15:27:23 2026/11/07
【摘要】 用 Python 标准库写一个批量重命名小工具:按前缀加序号重命名文件夹里的文件,默认先试运行打印新旧名字对照表,确认后再加 --apply 真正执行,并跳过目标已存在的文件。

下载文件夹里攒了一堆名字杂乱的文件,一个个改太费时间。下面这个小工具只用 Python 标准库:按指定前缀和序号批量重命名,默认先试运行,只打印新旧名字,确认无误后再加 --apply 真正执行。

完整代码

import argparse
from pathlib import Path


def plan_renames(folder: Path, prefix: str, suffix: str):
    """返回 (旧路径, 新路径) 列表,按文件名排序,序号从 1 开始。"""
    files = sorted(p for p in folder.iterdir() if p.is_file())
    plans = []
    for index, old in enumerate(files, start=1):
        ext = suffix or old.suffix
        new_name = f"{prefix}{index:03d}{ext}"
        plans.append((old, old.with_name(new_name)))
    return plans


def main():
    parser = argparse.ArgumentParser(description="批量重命名文件夹里的文件")
    parser.add_argument("folder", help="目标文件夹路径")
    parser.add_argument("--prefix", default="file_", help="新文件名前缀,默认 file_")
    parser.add_argument("--suffix", default="", help="统一的新扩展名,如 .jpg,默认保留原扩展名")
    parser.add_argument("--apply", action="store_true", help="真正执行重命名;不加则只试运行")
    args = parser.parse_args()

    folder = Path(args.folder)
    if not folder.is_dir():
        raise SystemExit(f"不是文件夹:{folder}")

    plans = plan_renames(folder, args.prefix, args.suffix)
    for old, new in plans:
        print(f"{old.name} -> {new.name}")

    if not args.apply:
        print("试运行,未真正改名。确认无误后加 --apply 再执行一次。")
        return

    for old, new in plans:
        if new.exists() and new != old:
            print(f"跳过:目标已存在 {new.name}")
            continue
        old.rename(new)
    print(f"完成,共处理 {len(plans)} 个文件。")


if __name__ == "__main__":
    main()

运行示例

在 photos 文件夹里有 a.jpg、b.jpg、c.png,先试运行:

python rename_files.py photos --prefix photo_

输出:

a.jpg -> photo_001.jpg
b.jpg -> photo_002.jpg
c.png -> photo_003.png
试运行,未真正改名。确认无误后加 --apply 再执行一次。

确认名字没问题,再真正执行:

python rename_files.py photos --prefix photo_ --apply

三个注意点

  1. 默认不改名:不加 --apply 只打印对照表,先看一遍再执行,避免改错。
  2. 目标已存在会跳过:新名字撞上已有文件时不覆盖,逐个提示。
  3. 只处理当前文件夹里的文件:不递归进子文件夹;先在副本文件夹里试一次更稳妥。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。