Skip to content
0

批量重命名脚本

批量重命名脚本

image-20250728072314704

目录

[toc]

需求

请写一个python脚本,将test目录下的所有.md文件重命名下,文件1的名称为1.demo.md 文件2的名称为2.demo.md,以此类推,请给出完整代码

回答

gpt回答:

以下是一个完整的 Python 脚本,用于将 test 目录下的所有 .md 文件按顺序重命名为 1.demo.md2.demo.md 等格式:

python
import os

def rename_md_files(directory="test"):
    # 获取目标目录下所有.md文件
    md_files = [f for f in os.listdir(directory) if f.endswith('.md')]
    md_files.sort()  # 按文件名排序(可选,确保顺序一致性)

    # 遍历文件并重命名
    for index, filename in enumerate(md_files, start=1):
        old_path = os.path.join(directory, filename)
        new_name = f"{index}.demo.md"
        new_path = os.path.join(directory, new_name)

        # 避免覆盖已存在的文件
        if os.path.exists(new_path):
            print(f"警告:{new_name} 已存在,跳过重命名 {filename}")
            continue

        os.rename(old_path, new_path)
        print(f"重命名: {filename} -> {new_name}")

if __name__ == "__main__":
    # 检查test目录是否存在
    if not os.path.exists("test"):
        print("错误:'test' 目录不存在")
    else:
        rename_md_files()

🍊关键点说明

  1. 文件筛选
    os.listdir() 列出目录内容,f.endswith('.md') 过滤出 .md 文件。

  2. 排序处理
    md_files.sort() 确保文件按字母顺序处理(可根据需求调整排序逻辑)。

  3. 安全重命名

    • 使用 os.path.exists(new_path) 检查是否会发生文件名冲突。
    • os.rename() 直接修改文件名,保留原文件内容。
  4. 索引从1开始
    enumerate(..., start=1) 使编号从 1.demo.md 开始而非 0.demo.md


🍊使用示例

假设 test 目录内容如下:

a.md
b.md
c.md

运行脚本后:

1.demo.md
2.demo.md
3.demo.md

🍊扩展功能

  • 递归处理子目录
    使用 os.walk(directory) 替代 os.listdir()
  • 自定义前缀/后缀
    修改 new_name = f"{index}.demo.md" 中的格式(如 prefix_{index}.md)。
  • 日志记录
    将重命名记录写入日志文件而非仅打印。

按需调整即可满足不同场景

亲测

以上脚本,经亲自测试,有效果。2025年7月28日测试

image-20250728072134712

脚本位置

D:\BaiduSyncdisk\脚本\02.Python脚本\02-批量重命名脚本

image-20250728192019359

最近更新