python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python重命名序列帧图片名称

使用Python脚本一键重命名序列帧图片的名称

作者:90后晨仔

在开发中,我们经常需要使用序列帧动画来实现下拉刷新、加载动画、空状态动效等交互,设计师交付的序列帧图片资源,命名往往各不相同,而我们的代码通常期望统一的命名规范,本文将教你使用一行Python脚本,实现图片的批量重命名,需要的朋友可以参考下

前言

在开发中,我们经常需要使用序列帧动画来实现下拉刷新、加载动画、空状态动效等交互。设计师交付的序列帧图片资源,命名往往各不相同:

序列帧00001.png
testImage_00002.png
...
testImageName_00040.png

而我们的代码通常期望统一的命名规范:

modifiedImageName_00001.png
modifiedImageName_00002.png
...
modifiedImageName_00040.png

手动重命名40张上百张图片?不仅耗时,还容易出错。向设计师提出修改请求?对方可能还爱答不理的。本文将教你使用一行Python脚本,实现图片的批量重命名,3秒搞定,彻底解放双手!

一、为何需要自动化重命名?

手动重命名的痛点

自动化重命名的优势

二、Python脚本实战:批量重命名序列帧图片

项目结构准备

创建一个工作文件夹(例如命名为RenameTool),其中包含以下内容:

RenameTool/
├── SourceImages/                    # 原始图片文件夹
│   ├── testImageName_00001.png
│   ├── testImageName_00002.png
│   └── ...(共40张序列帧图片)
└── rename_images.py                 # 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. 灵活的路径配置

SOURCE_FOLDER = 'SourceImages'      # 原始图片文件夹
TARGET_FOLDER = 'SourceImages'      # 目标文件夹(可设置为新文件夹)

2. 精确的命名匹配

OLD_PREFIX = 'testImageName_'       # 需要被替换的前缀
NEW_PREFIX = 'modifiedImageName_'   # 新的前缀

3. 完善的异常处理

4. 智能文件排序

sorted(os.listdir(SOURCE_FOLDER))

确保图片按 00001, 00002... 的顺序处理,保证动画序列的正确性

四、如何使用这个脚本?

步骤1:准备环境

确保你的电脑已安装Python 3.x(macOS通常已预装)

步骤2:创建项目结构

# 创建项目文件夹
mkdir RenameTool
cd RenameTool

# 创建原始图片文件夹
mkdir SourceImages

# 将设计师提供的序列帧图片复制到SourceImages文件夹中
# 图片命名应为:testImageName_00001.png, testImageName_00002.png...

# 创建Python脚本
touch rename_images.py

步骤3:编辑脚本并配置参数

  1. 使用文本编辑器打开rename_images.py
  2. 粘贴上面的完整脚本代码
  3. 根据需要修改顶部的四个配置参数:
    • SOURCE_FOLDER:原始图片文件夹名
    • TARGET_FOLDER:目标文件夹名
    • OLD_PREFIX:原始文件名前缀
    • NEW_PREFIX:新文件名前缀

步骤4:运行脚本

# 在RenameTool目录下执行
python3 rename_images.py

步骤5:查看运行结果

脚本会显示详细的处理过程:

🔍 iOS序列帧图片批量重命名工具
==================================================
📂 正在扫描文件夹:SourceImages
📊 找到 40 个文件
--------------------------------------------------
✅ 已重命名:testImageName_00001.png → modifiedImageName_00001.png
✅ 已重命名:testImageName_00002.png → modifiedImageName_00002.png
...
==================================================
📊 重命名完成!
   ✅ 成功重命名:40 个文件
   ➖ 跳过处理:0 个文件
📁 文件保存在:SourceImages(原地重命名)
🎉 所有序列帧图片已准备就绪,可直接用于iOS项目!

五、进阶使用技巧

1. 批量处理多个文件夹

如果需要处理多个动画序列,可以创建不同的配置块:

# 配置组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)

import sys

# 通过拖拽获取文件夹路径
if len(sys.argv) > 1:
    SOURCE_FOLDER = sys.argv[1]
    print(f"📁 使用拖拽的文件夹:{SOURCE_FOLDER}")

3. 备份原始文件

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:脚本运行后没有任何文件被重命名?

Q2:如何重命名其他格式的图片?

修改脚本中的文件类型判断:

# 支持多种图片格式
if filename.lower().endswith(('.png', '.jpg', '.jpeg')):

Q3:如何处理不规则命名的图片?

# 使用正则表达式匹配更复杂的命名模式
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重命名序列帧图片名称的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文