前言
在开发中,我们经常需要使用序列帧动画来实现下拉刷新、加载动画、空状态动效等交互。设计师交付的序列帧图片资源,命名往往各不相同:
erlang
序列帧00001.png
testImage_00002.png
...
testImageName_00040.png
而我们的代码通常期望统一的命名规范:
erlang
modifiedImageName_00001.png
modifiedImageName_00002.png
...
modifiedImageName_00040.png
手动重命名40张上百张图片?不仅耗时,还容易出错。向设计师提出修改请求?对方可能还爱答不理的。本文将教你使用一行Python脚本 ,实现图片的批量重命名,3秒搞定,彻底解放双手!
一、为何需要自动化重命名?
❌ 手动重命名的痛点
- 耗时费力:重命名40张图片大约需要5分钟,100张则需更久
- 易出错:手误改错一个数字,可能导致动画断帧或显示异常
- 不专业:命名不统一会给团队协作和后续维护带来混乱
- 重复劳动:每次更换主题或动效样式都需要重复操作
✅ 自动化重命名的优势
- ⚡ 高效快捷:3秒即可完成100张图片的重命名
- ✅ 精准无误:避免人为操作导致的命名错误
- 🔄 高度可复用:简单调整参数即可适用于不同项目
- 🕒 提升效率:将宝贵时间用于核心业务逻辑开发
二、Python脚本实战:批量重命名序列帧图片
📁 项目结构准备
创建一个工作文件夹(例如命名为RenameTool),其中包含以下内容:
bash
RenameTool/
├── SourceImages/ # 原始图片文件夹
│ ├── testImageName_00001.png
│ ├── testImageName_00002.png
│ └── ...(共40张序列帧图片)
└── rename_images.py # Python重命名脚本
- 原始命名 :
testImageName_00001.png~testImageName_00040.png - 目标命名 :
modifiedImageName_00001.png~modifiedImageName_00040.png
🐍 优化后的Python脚本(带详细注释)
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
序列帧动画图片批量重命名工具
功能:将指定文件夹中的图片文件按照指定规则进行批量重命名
"""
import os
# ==================== 配置参数 ====================
# 请根据实际情况修改以下四个参数
# 1. 原始图片所在的文件夹路径(相对于脚本的位置)
SOURCE_FOLDER = 'SourceImages'
# 2. 目标保存的文件夹路径(如果与原始文件夹相同,则为原地重命名)
TARGET_FOLDER = 'SourceImages' # 可以修改为'RenamedImages'来保存到新文件夹
# 3. 需要被替换的原始文件名前缀(区分大小写)
OLD_PREFIX = 'testImageName_'
# 4. 替换后的新文件名前缀
NEW_PREFIX = 'modifiedImageName_'
# ==================== 主程序开始 ====================
def main():
"""
主函数:执行批量重命名操作
"""
print("🔍 iOS序列帧图片批量重命名工具")
print("=" * 50)
# 检查源文件夹是否存在
if not os.path.exists(SOURCE_FOLDER):
print(f"❌ 错误:源文件夹 '{SOURCE_FOLDER}' 不存在!")
print("💡 提示:请确保脚本与图片文件夹在同一目录下")
return
# 如果目标文件夹不存在,则创建
if TARGET_FOLDER != SOURCE_FOLDER and not os.path.exists(TARGET_FOLDER):
os.makedirs(TARGET_FOLDER)
print(f"📁 已创建目标文件夹:{TARGET_FOLDER}")
# 获取源文件夹中所有文件,并按名称排序(确保序列正确)
all_files = sorted(os.listdir(SOURCE_FOLDER))
# 统计计数器
renamed_count = 0
skipped_count = 0
print(f"📂 正在扫描文件夹:{SOURCE_FOLDER}")
print(f"📊 找到 {len(all_files)} 个文件")
print("-" * 50)
# 遍历文件夹中的所有文件
for filename in all_files:
# 检查文件是否为PNG格式且以指定前缀开头
if filename.endswith('.png') and filename.startswith(OLD_PREFIX):
# 构建完整的原始文件路径
old_path = os.path.join(SOURCE_FOLDER, filename)
# 生成新文件名:替换前缀
new_filename = filename.replace(OLD_PREFIX, NEW_PREFIX, 1)
# 构建完整的目标文件路径
if TARGET_FOLDER == SOURCE_FOLDER:
new_path = os.path.join(SOURCE_FOLDER, new_filename)
else:
new_path = os.path.join(TARGET_FOLDER, new_filename)
try:
# 执行重命名操作
os.rename(old_path, new_path)
print(f"✅ 已重命名:{filename} → {new_filename}")
renamed_count += 1
except FileExistsError:
print(f"⚠️ 跳过:{new_filename} 已存在,避免覆盖")
skipped_count += 1
except PermissionError:
print(f"❌ 权限错误:无法重命名 {filename}(文件可能被其他程序占用)")
except Exception as e:
print(f"❌ 错误处理 {filename}: {str(e)}")
else:
# 统计不符合条件的文件
if filename.endswith('.png'):
print(f"➖ 跳过:{filename}(前缀不匹配)")
else:
# 非PNG文件,静默跳过
skipped_count += 1
# 输出统计结果
print("=" * 50)
print("📊 重命名完成!")
print(f" ✅ 成功重命名:{renamed_count} 个文件")
print(f" ➖ 跳过处理:{skipped_count} 个文件")
if renamed_count > 0:
if TARGET_FOLDER == SOURCE_FOLDER:
print(f"📁 文件保存在:{SOURCE_FOLDER}(原地重命名)")
else:
print(f"📁 文件已保存至:{TARGET_FOLDER}")
print("🎉 所有序列帧图片已准备就绪,可直接用于iOS项目!")
else:
print("ℹ️ 没有文件被重命名,请检查配置参数")
# 脚本入口点
if __name__ == "__main__":
main()
点击下载脚本
三、脚本核心功能解析
1. 灵活的路径配置
python
SOURCE_FOLDER = 'SourceImages' # 原始图片文件夹
TARGET_FOLDER = 'SourceImages' # 目标文件夹(可设置为新文件夹)
- 原地重命名 :
TARGET_FOLDER = SOURCE_FOLDER - 保存到新位置 :
TARGET_FOLDER = 'RenamedImages'
2. 精确的命名匹配
python
OLD_PREFIX = 'testImageName_' # 需要被替换的前缀
NEW_PREFIX = 'modifiedImageName_' # 新的前缀
- 支持自定义任意前缀替换
- 确保只替换第一个匹配的前缀,避免错误修改
3. 完善的异常处理
- FileExistsError:目标文件已存在时跳过,避免覆盖
- PermissionError:文件被占用时的友好提示
- 通用异常捕获:确保脚本不会意外崩溃
4. 智能文件排序
python
sorted(os.listdir(SOURCE_FOLDER))
确保图片按 00001, 00002... 的顺序处理,保证动画序列的正确性
四、如何使用这个脚本?
步骤1:准备环境
确保你的电脑已安装Python 3.x(macOS通常已预装)
步骤2:创建项目结构
bash
# 创建项目文件夹
mkdir RenameTool
cd RenameTool
# 创建原始图片文件夹
mkdir SourceImages
# 将设计师提供的序列帧图片复制到SourceImages文件夹中
# 图片命名应为:testImageName_00001.png, testImageName_00002.png...
# 创建Python脚本
touch rename_images.py
步骤3:编辑脚本并配置参数
- 使用文本编辑器打开
rename_images.py - 粘贴上面的完整脚本代码
- 根据需要修改顶部的四个配置参数:
SOURCE_FOLDER:原始图片文件夹名TARGET_FOLDER:目标文件夹名OLD_PREFIX:原始文件名前缀NEW_PREFIX:新文件名前缀
步骤4:运行脚本
bash
# 在RenameTool目录下执行
python3 rename_images.py
步骤5:查看运行结果
脚本会显示详细的处理过程:
markdown
🔍 iOS序列帧图片批量重命名工具
==================================================
📂 正在扫描文件夹:SourceImages
📊 找到 40 个文件
--------------------------------------------------
✅ 已重命名:testImageName_00001.png → modifiedImageName_00001.png
✅ 已重命名:testImageName_00002.png → modifiedImageName_00002.png
...
==================================================
📊 重命名完成!
✅ 成功重命名:40 个文件
➖ 跳过处理:0 个文件
📁 文件保存在:SourceImages(原地重命名)
🎉 所有序列帧图片已准备就绪,可直接用于iOS项目!
五、进阶使用技巧
1. 批量处理多个文件夹
如果需要处理多个动画序列,可以创建不同的配置块:
python
# 配置组1:处理下拉刷新动画
configs = [
{
'source': 'PullRefreshImages',
'old_prefix': 'refresh_',
'new_prefix': 'pull_refresh_day_'
},
{
'source': 'LoadingImages',
'old_prefix': 'loading_',
'new_prefix': 'page_loading_'
}
]
# 循环处理所有配置
for config in configs:
# 调用重命名函数...
2. 添加拖拽支持(macOS)
python
import sys
# 通过拖拽获取文件夹路径
if len(sys.argv) > 1:
SOURCE_FOLDER = sys.argv[1]
print(f"📁 使用拖拽的文件夹:{SOURCE_FOLDER}")
3. 备份原始文件
python
import shutil
# 重命名前先复制到备份文件夹
backup_folder = f"{SOURCE_FOLDER}_backup"
if not os.path.exists(backup_folder):
shutil.copytree(SOURCE_FOLDER, backup_folder)
print(f"📦 已创建备份:{backup_folder}")
六、常见问题解答
Q1:脚本运行后没有任何文件被重命名?
- 检查
OLD_PREFIX是否与图片实际前缀完全一致(包括大小写) - 确认图片格式是否为
.png(脚本默认只处理PNG格式)
Q2:如何重命名其他格式的图片?
修改脚本中的文件类型判断:
python
# 支持多种图片格式
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
Q3:如何处理不规则命名的图片?
python
# 使用正则表达式匹配更复杂的命名模式
import re
pattern = r'刷新_(\d{5})\.png'
match = re.match(pattern, filename)
if match:
number = match.group(1)
new_filename = f"refresh_animation_{number}.png"
结语
通过这个简单的Python脚本,你可以将原本繁琐的图片重命名工作自动化,节省大量时间,减少人为错误。无论是处理40张还是400张序列帧图片,都只需运行一次脚本即可完成。
技术开发的核心价值在于解决重复性工作,让开发者能够专注于更有挑战性的任务。掌握这样的小工具,不仅能提升个人效率,也能让整个团队的开发流程更加规范高效。
立即尝试,告别手动重命名的烦恼,体验自动化带来的便捷吧!