Python自动化脚本:批量重命名图片文件(00-09 → 0-9)
前言
在日常开发工作中,我们经常会遇到需要批量处理文件的情况。比如今天要分享的这个场景:将一批命名格式为 00.png 到 09.png 的图片文件,重命名为 0.png 到 9.png。虽然手动修改10个文件看起来并不复杂,但如果未来遇到成百上千个文件,手动操作就会变得非常耗时且容易出错。本文将分享一个Python脚本,不仅能够自动完成这个重命名任务,还包含了文件备份、冲突处理等实用功能。
问题分析
需求描述
- 源文件:00.png, 01.png, 02.png, …, 09.png
- 目标文件:0.png, 1.png, 2.png, …, 9.png
- 共计10个PNG格式的图片文件
潜在风险
- 数据丢失风险:直接重命名可能导致文件损坏或丢失
- 命名冲突:如果目标文件已经存在,直接重命名会覆盖原文件
- 操作不可逆:批量操作一旦出错,难以手动恢复
解决方案设计
基于以上分析,我们需要一个满足以下要求的脚本:
- ✅ 自动备份原文件
- ✅ 处理命名冲突
- ✅ 操作前确认提示
- ✅ 详细的执行日志
完整代码实现
import os
import shutil
def rename_files():
# 获取当前脚本所在目录
folder_path = os.path.dirname(os.path.abspath(__file__))
# 如果需要处理其他文件夹,可以取消下面这行的注释并修改路径
# folder_path = r"你的图片文件夹路径"
print(f"正在处理文件夹: {folder_path}")
# 创建备份文件夹
backup_folder = os.path.join(folder_path, "backup")
if not os.path.exists(backup_folder):
os.makedirs(backup_folder)
print(f"创建备份文件夹: {backup_folder}")
success_count = 0
# 遍历处理 0-9 十个文件
for i in range(10):
old_name = f"{i:02d}.png" # 生成00-09格式
new_name = f"{i}.png" # 生成0-9格式
old_path = os.path.join(folder_path, old_name)
new_path = os.path.join(folder_path, new_name)
# 检查源文件是否存在
if os.path.exists(old_path):
# 备份原文件
backup_path = os.path.join(backup_folder, old_name)
shutil.copy2(old_path, backup_path)
print(f"已备份: {old_name}")
# 处理命名冲突:如果新文件已存在,暂时移动
if os.path.exists(new_path):
temp_path = os.path.join(folder_path, f"temp_{new_name}")
os.rename(new_path, temp_path)
print(f"临时移动现有文件: {new_name} -> temp_{new_name}")
# 执行重命名
os.rename(old_path, new_path)
print(f"重命名成功: {old_name} -> {new_name}")
success_count += 1
else:
print(f"文件不存在: {old_name}")
print(f"\n操作完成!成功重命名 {success_count} 个文件")
print(f"原文件已备份到: {backup_folder}")
if __name__ == "__main__":
# 操作确认
print("此脚本将重命名 00.png 到 09.png 为 0.png 到 9.png")
response = input("是否继续?(y/n): ")
if response.lower() == 'y':
rename_files()
else:
print("操作已取消")
代码详解
1. 导入必要模块
os:提供文件路径操作和重命名功能shutil:用于文件复制备份
2. 获取目标文件夹路径
folder_path = os.path.dirname(os.path.abspath(__file__))
这行代码自动获取脚本所在目录,避免了硬编码路径的麻烦。
3. 创建备份机制
backup_folder = os.path.join(folder_path, "backup")
if not os.path.exists(backup_folder):
os.makedirs(backup_folder)
在操作前创建 backup 文件夹,确保所有原文件都有备份。
4. 文件名格式化技巧
old_name = f"{i:02d}.png" # 输出:00, 01, 02...
new_name = f"{i}.png" # 输出:0, 1, 2...
使用 Python 的 f-string 格式化,:02d 表示整数占2位,不足补0。
5. 冲突处理策略
当发现目标文件已存在时,脚本会先将现有文件临时重命名为 temp_文件名,避免被覆盖。
6. 安全确认机制
脚本运行前会要求用户确认,防止误操作。
使用方法
- 保存脚本:将代码保存为
rename_images.py - 放置文件:将脚本放在包含图片的文件夹中
- 运行脚本:在终端执行
python rename_images.py - 确认操作:输入
y确认执行
运行效果示例
此脚本将重命名 00.png 到 09.png 为 0.png 到 9.png
是否继续?(y/n): y
正在处理文件夹: D:\Projects\images
创建备份文件夹: D:\Projects\images\backup
已备份: 00.png
重命名成功: 00.png -> 0.png
已备份: 01.png
临时移动现有文件: 1.png -> temp_1.png
重命名成功: 01.png -> 1.png
...
操作完成!成功重命名 10 个文件
原文件已备份到: D:\Projects\images\backup
扩展应用
这个脚本的核心逻辑可以轻松扩展到其他场景:
1. 处理其他文件类型
# 修改文件扩展名
extension = ".jpg" # 或 .txt, .docx 等
old_name = f"{i:02d}{extension}"
new_name = f"{i}{extension}"
2. 处理更多文件
# 处理 000-999 共1000个文件
for i in range(1000):
old_name = f"{i:03d}.png" # 000, 001, 002...
3. 自定义命名规则
# 添加前缀或后缀
new_name = f"image_{i}.png" # image_0, image_1...
总结
通过这个简单的脚本,我们不仅解决了眼前的文件重命名需求,还建立了一个可复用的批量文件处理模板。这个脚本体现了编程思维中的重要原则:
- 自动化:用代码代替重复的手工操作
- 安全性:备份和冲突处理机制
- 用户体验:操作确认和详细日志
希望这个脚本对你有帮助!如果你有类似的批量处理需求,欢迎在评论区讨论交流。
完整代码已上传,可以直接复制使用。如果觉得有用,欢迎点赞收藏! 🚀
注:本文为原创技术博客,转载请注明出处。
&spm=1001.2101.3001.5002&articleId=158571322&d=1&t=3&u=0043165192254090bc538c2d98d7d651)
1187

被折叠的 条评论
为什么被折叠?



