当前位置: 首页 > article >正文

Python脚本实现批量文件重命名与清单生成

Python脚本实现批量文件重命名与清单生成

在处理项目资源,特别是图像文件时,经常会遇到需要对大量文件进行重命名或根据特定格式整理的情况。本文将介绍一个使用Python编写的简单但功能强大的脚本,它可以帮助用户自动完成文件名的替换、调整,并且自动生成包含所有文件路径的列表文本文件。这个工具对于开发者、设计师或是任何需要管理大量数字资产的人来说都非常有用。

脚本概述

该脚本主要执行以下几项任务:

  1. 遍历指定目录下的所有文件:从给定的根目录开始,递归地访问每个子目录。
  2. 重命名特定后缀的文件:如果发现文件名为@2x.png结尾,则将其改为_2x.png
  3. 统一字符:将文件名中的减号-替换为下划线_
  4. 过滤并记录文件:忽略那些已经改名为_2x.png的文件,只记录其余文件到一个名为fileList.txt的新文本文件中。
import os


def get_all_files(folder):
    fileNameList = []

    for root, dirs, files in os.walk(folder):
        for file in files:
            original_file_path = os.path.join(root, file)

            # 如果文件名以 @2x.png 结尾,修改文件名为 _2x.png
            if file.endswith('@2x.png'):
                new_file_name = file.replace('@2x', '_2x')
                new_file_path = os.path.join(root, new_file_name)
                if os.path.exists(original_file_path):
                    os.rename(original_file_path, new_file_path)
                    file = new_file_name  # 更新文件名为新文件名,继续处理后续逻辑
                    original_file_path = new_file_path  # 更新文件路径
                else:
                    print(f"文件不存在:{original_file_path}")

            # 将文件名中的-替换为_
            if '-' in file:
                new_file_name = file.replace('-', '_')
                new_file_path = os.path.join(root, new_file_name)
                if os.path.exists(original_file_path):
                    os.rename(original_file_path, new_file_path)
                    file = new_file_name  # 更新文件名为新文件名,继续处理后续逻辑
                    original_file_path = new_file_path  # 更新文件路径
                else:
                    print(f"文件不存在:{original_file_path}")

            # 添加不以 _2x.png 结尾的文件
            if not file.endswith('_2x.png'):
                fileNameList.append(file)

    # 将文件名写入文件
    with open('fileList.txt', 'w', encoding='utf-8') as f:
        for file in fileNameList:
            f.write('<file>Resource/' + file + '</file>\n')
        print('文件名写入文件成功!')


if __name__ == '__main__':
    folder = input("请输入文件夹路径:")
    get_all_files(folder)  # 调用函数


http://www.kler.cn/a/398987.html

相关文章:

  • Vue3 -- 项目配置之eslint【企业级项目配置保姆级教程1】
  • JAVA-链表
  • 无人机动力系统测试-实测数据与CFD模拟仿真数据关联对比分析
  • 【设计模式】行为型模式(五):解释器模式、访问者模式、依赖注入
  • django解决跨域问题
  • 【AtCoder】Beginner Contest 380-C.Move Segment
  • 前端隐藏元素的方式有哪些?HTML 和 CSS 中隐藏元素的多种方法
  • Spring纯注解开发
  • 【数据库】mysql数据库迁移前应如何备份数据?
  • 机器学习的概览
  • 【金融风控】样本不均衡和异常点检测
  • 随机森林(Random Forest, RF)筛选回归数据(处理异常值)
  • sql注入之二次注入(sqlilabs-less24)
  • JSON.stringify的应用说明
  • ARM(安谋) China处理器
  • 多进程/线程并发服务器
  • 如何判断FPGA能够接入几个Camera
  • STM32外设应用:深入探索STM32微控制器的强大功能
  • 2024 RISC-V中国峰会 安全相关议题汇总
  • 聊天服务器(3)muduo网络库
  • IDEA优雅debug
  • 重构代码之替换算法
  • 9.C++面向对象6(实现一个较为完善的日期类)
  • 高效稳定!新加坡服务器托管方案助力企业全球化布局
  • centos7.9安装mysql社区版
  • 动态规划子数组系列一>乘积最大子数组