文章目录
- 创建一个工作文件夹(例如命名为RenameTool),其中包含以下内容: 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
- #!/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()
- SOURCE_FOLDER = ‘SourceImages’ # 原始图片文件夹 TARGET_FOLDER = ‘SourceImages’ # 目标文件夹(可设置为新文件夹) 原地重命名:TARGET_FOLDER = SOURCE_FOLDER 保存到新位置:TARGET_FOLDER = 'RenamedImages'
- OLD_PREFIX = ‘testImageName_’ # 需要被替换的前缀 NEW_PREFIX = ‘modifiedImageName_’ # 新的前缀 支持自定义任意前缀替换 确保只替换第一个匹配的前缀,避免错误修改
- FileExistsError:目标文件已存在时跳过,避免覆盖 PermissionError:文件被占用时的友好提示 通用异常捕获:确保脚本不会意外崩溃
- sorted(os.listdir(SOURCE_FOLDER)) 确保图片按 00001, 00002… 的顺序处理,保证动画序列的正确性
- 确保你的电脑已安装Python 3.x(macOS通常已预装)
- # 创建项目文件夹 mkdir RenameTool cd RenameTool # 创建原始图片文件夹 mkdir SourceImages # 将设计师提供的序列帧图片复制到SourceImages文件夹中 # 图片命名应为:testImageName_00001.png, testImageName_00002.png… # 创建Python脚本 touch rename_images.py
- 使用文本编辑器打开rename_images.py 粘贴上面的完整脚本代码 根据需要修改顶部的四个配置参数: SOURCE_FOLDER:原始图片文件夹名 TARGET_FOLDER:目标文件夹名 OLD_PREFIX:原始文件名前缀 NEW_PREFIX:新文件名前缀
- # 在RenameTool目录下执行 python3 rename_images.py
- 脚本会显示详细的处理过程: 🔍 iOS序列帧图片批量重命名工具 ================================================== 📂 正在扫描文件夹:SourceImages 📊 找到 40 个文件 ————————————————– ✅ 已重命名:testImageName_00001.png → modifiedImageName_00001.png ✅ 已重命名:testImageName_00002.png → modifiedImageName_00002.png … ================================================== 📊 重命名完成! ✅ 成功重命名:40 个文件 ➖ 跳过处理:0 个文件 📁 文件保存在:SourceImages(原地重命名) 🎉 所有序列帧图片已准备就绪,可直接用于iOS项目!
- 如果需要处理多个动画序列,可以创建不同的配置块: # 配置组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: # 调用重命名函数…
- import sys # 通过拖拽获取文件夹路径 if len(sys.argv) > 1: SOURCE_FOLDER = sys.argv[1] print(f”📁 使用拖拽的文件夹:{SOURCE_FOLDER}”)
- 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}”)
- 检查OLD_PREFIX是否与图片实际前缀完全一致(包括大小写) 确认图片格式是否为.png(脚本默认只处理PNG格式)
- 修改脚本中的文件类型判断: # 支持多种图片格式 if filename.lower().endswith((‘.png’, ‘.jpg’, ‘.jpeg’)):
- # 使用正则表达式匹配更复杂的命名模式 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脚本实战:批量重命名序列帧图片
- 项目结构准备
- 优化后的Python脚本(带详细注释)
- 三、脚本核心功能解析
- 1. 灵活的路径配置
- 2. 精确的命名匹配
- 3. 完善的异常处理
- 4. 智能文件排序
- 四、如何使用这个脚本?
- 步骤1:准备环境
- 步骤2:创建项目结构
- 步骤3:编辑脚本并配置参数
- 步骤4:运行脚本
- 步骤5:查看运行结果
- 五、进阶使用技巧
- 1. 批量处理多个文件夹
- 2. 添加拖拽支持(macOS)
- 3. 备份原始文件
- 六、常见问题解答
- Q1:脚本运行后没有任何文件被重命名?
- Q2:如何重命名其他格式的图片?
- Q3:如何处理不规则命名的图片?
- 结语
在开发中,我们经常需要使用序列帧动画来实现下拉刷新、加载动画、空状态动效等交互。设计师交付的序列帧图片资源,命名往往各不相同:
序列帧00001.png testImage_00002.png ... testImageName_00040.png
而我们的代码通常期望统一的命名规范:
modifiedImageName_00001.png modifiedImageName_00002.png ... modifiedImageName_00040.png
手动重命名40张上百张图片?不仅耗时,还容易出错。向设计师提出修改请求?对方可能还爱答不理的。本文将教你使用一行Python脚本,实现图片的批量重命名,3秒搞定,彻底解放双手!
- 耗时费力:重命名40张图片大约需要5分钟,100张则需更久
- 易出错:手误改错一个数字,可能导致动画断帧或显示异常
- 不专业:命名不统一会给团队协作和后续维护带来混乱
- 重复劳动:每次更换主题或动效样式都需要重复操作
- 高效快捷:3秒即可完成100张图片的重命名
- 精准无误:避免人为操作导致的命名错误
- 高度可复用:简单调整参数即可适用于不同项目
- 提升效率:将宝贵时间用于核心业务逻辑开发
创建一个工作文件夹(例如命名为RenameTool),其中包含以下内容:
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
#!/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()
SOURCE_FOLDER = 'SourceImages' # 原始图片文件夹
TARGET_FOLDER = 'SourceImages' # 目标文件夹(可设置为新文件夹)
- 原地重命名:
TARGET_FOLDER = SOURCE_FOLDER
- 保存到新位置:
TARGET_FOLDER = 'RenamedImages'
TARGET_FOLDER = SOURCE_FOLDERTARGET_FOLDER = 'RenamedImages'
OLD_PREFIX = 'testImageName_' # 需要被替换的前缀
NEW_PREFIX = 'modifiedImageName_' # 新的前缀
- 支持自定义任意前缀替换
- 确保只替换第一个匹配的前缀,避免错误修改
- FileExistsError:目标文件已存在时跳过,避免覆盖
- PermissionError:文件被占用时的友好提示
- 通用异常捕获:确保脚本不会意外崩溃
sorted(os.listdir(SOURCE_FOLDER))
确保图片按 00001, 00002… 的顺序处理,保证动画序列的正确性
确保你的电脑已安装Python 3.x(macOS通常已预装)
# 创建项目文件夹
mkdir RenameTool
cd RenameTool
# 创建原始图片文件夹
mkdir SourceImages
# 将设计师提供的序列帧图片复制到SourceImages文件夹中
# 图片命名应为:testImageName_00001.png, testImageName_00002.png...
# 创建Python脚本
touch rename_images.py
- 使用文本编辑器打开
rename_images.py
- 粘贴上面的完整脚本代码
- 根据需要修改顶部的四个配置参数:
SOURCE_FOLDER:原始图片文件夹名
TARGET_FOLDER:目标文件夹名
OLD_PREFIX:原始文件名前缀
NEW_PREFIX:新文件名前缀
rename_images.pySOURCE_FOLDER:原始图片文件夹名TARGET_FOLDER:目标文件夹名OLD_PREFIX:原始文件名前缀NEW_PREFIX:新文件名前缀
# 在RenameTool目录下执行
python3 rename_images.py
脚本会显示详细的处理过程:
🔍 iOS序列帧图片批量重命名工具 ================================================== 📂 正在扫描文件夹:SourceImages 📊 找到 40 个文件 -------------------------------------------------- ✅ 已重命名:testImageName_00001.png → modifiedImageName_00001.png ✅ 已重命名:testImageName_00002.png → modifiedImageName_00002.png ... ================================================== 📊 重命名完成! ✅ 成功重命名:40 个文件 ➖ 跳过处理:0 个文件 📁 文件保存在:SourceImages(原地重命名) 🎉 所有序列帧图片已准备就绪,可直接用于iOS项目!
如果需要处理多个动画序列,可以创建不同的配置块:
# 配置组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:
# 调用重命名函数...
import sys
# 通过拖拽获取文件夹路径
if len(sys.argv) > 1:
SOURCE_FOLDER = sys.argv[1]
print(f"📁 使用拖拽的文件夹:{SOURCE_FOLDER}")
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}")
- 检查
OLD_PREFIX是否与图片实际前缀完全一致(包括大小写)
- 确认图片格式是否为
.png(脚本默认只处理PNG格式)
OLD_PREFIX是否与图片实际前缀完全一致(包括大小写).png(脚本默认只处理PNG格式)
修改脚本中的文件类型判断:
# 支持多种图片格式
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
# 使用正则表达式匹配更复杂的命名模式
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张序列帧图片,都只需运行一次脚本即可完成。
技术开发的核心价值在于解决重复性工作,让开发者能够专注于更有挑战性的任务。掌握这样的小工具,不仅能提升个人效率,也能让整个团队的开发流程更加规范高效。
立即尝试,告别手动重命名的烦恼,体验自动化带来的便捷吧!
以上就是使用Python脚本一键重命名序列帧图片的名称的详细内容,更多关于Python重命名序列帧图片名称的资料请关注风君子博客其它相关文章!
您可能感兴趣的文章:
- Python如何实现图片批量重命名功能
- Python实现提取Excel嵌入图片并重命名
- 使用Python实现图片批量重命名工具
- Python进行图片信息提取并重命名
- python如何实现图片重命名并保存