批量重命名脚本
批量重命名脚本
目录
[toc]
需求
请写一个python脚本,将test目录下的所有.md文件重命名下,文件1的名称为1.demo.md 文件2的名称为2.demo.md,以此类推,请给出完整代码
回答
gpt回答:
以下是一个完整的 Python 脚本,用于将 test
目录下的所有 .md
文件按顺序重命名为 1.demo.md
、2.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()
🍊关键点说明
文件筛选
os.listdir()
列出目录内容,f.endswith('.md')
过滤出.md
文件。排序处理
md_files.sort()
确保文件按字母顺序处理(可根据需求调整排序逻辑)。安全重命名
- 使用
os.path.exists(new_path)
检查是否会发生文件名冲突。 os.rename()
直接修改文件名,保留原文件内容。
- 使用
索引从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日测试
脚本位置
D:\BaiduSyncdisk\脚本\02.Python脚本\02-批量重命名脚本