(MJ处理)第一个下划线转逗号,剩下的转空格

发布时间 2023-12-19 21:58:52作者: 不上火星不改名

在处理大量文件时,手动进行文件重命名和删除特定类型文件通常是耗时且易出错的。为了提高效率和准确性,我开发了一个Python脚本,这个脚本可以自动化执行这些常见的文件管理任务。以下是脚本的主要功能和操作流程:

功能概述

  1. 目录备份

    • 在进行任何文件操作之前,脚本会自动创建指定目录的备份。这一步骤是为了防止在文件处理过程中发生意外,从而保护原始数据。
  2. 文件重命名

    • 对于图片文件(支持.png.jpg.jpeg.gif格式),脚本会将文件名中的第一个下划线(_)替换为逗号加空格(, ),其余下划线替换为空格。这一处理方式旨在改善文件命名的可读性,特别是对于那些包含多个下划线的文件名。
  3. 删除特定类型文件

    • 脚本会自动删除所有.txt(文本文件)和.xlsx(Excel电子表格文件)。这一功能适用于清理不需要的文件类型,从而整理出更干净的目录结构。

操作流程

  1. 用户输入

    • 用户通过命令行界面输入需要处理的目录路径。
  2. 检查目录存在性

    • 脚本会首先检查用户指定的目录是否存在,以防止尝试访问不存在的目录。
  3. 创建目录备份

    • 在进行任何修改之前,脚本会自动在指定目录中创建一个名为_backup的子目录,用于存放原始数据的备份。
  4. 重命名图片文件

    • 在备份目录中,脚本将遍历所有图片文件,并按照上述规则进行重命名。
  5. 删除特定类型文件

    • 同样在备份目录中,脚本将查找并删除所有.txt.xlsx文件。
  6. 操作完成提示

    • 完成所有操作后,脚本会输出完成提示,告知用户已完成文件处理。

适用场景

这个脚本特别适合于需要快速整理大量图片文件、统一文件命名格式,并删除不必要文件的场景。它通过自动化这些常见的文件管理任务,可以节省大量的时间和精力,同时降低人工操作错误的风险。无论是个人用户还是企业用户,都可以从中受益。

 
import os
import shutil

def copy_directory(src, dst):
    """复制 src 目录到 dst 目录。"""
    try:
        shutil.copytree(src, dst)
    except FileExistsError:
        print(f"备份目录 '{dst}' 已存在。")

def rename_image_files(directory):
    """重命名图片文件,第一个下划线转换为逗号加空格,其他下划线转换为空格。"""
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
                parts = file.split('_')
                if len(parts) > 1:
                    new_file_name = parts[0] + ', ' + ' '.join(parts[1:])
                else:
                    new_file_name = file

                if new_file_name != file:
                    original_file_path = os.path.join(root, file)
                    new_file_path = os.path.join(root, new_file_name)
                    increment = 1
                    while os.path.exists(new_file_path):
                        file_name, file_extension = os.path.splitext(new_file_name)
                        new_file_name = f"{file_name} ({increment}){file_extension}"
                        new_file_path = os.path.join(root, new_file_name)
                        increment += 1
                    os.rename(original_file_path, new_file_path)
                    print(f"文件 {original_file_path} 已重命名为 {new_file_path}")

def delete_specified_files(directory):
    """删除所有txt和excel文件。"""
    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.lower().endswith(('.txt', '.xlsx')):
                os.remove(os.path.join(root, file))
                print(f"文件 {file} 已删除。")

def main():
    input_directory = input("请输入要处理的目录路径: ")
    if not os.path.exists(input_directory):
        print(f"指定的目录 {input_directory} 不存在。")
        return

    backup_directory = os.path.join(input_directory, "_backup")
    print(f"正在创建备份目录: {backup_directory}")
    copy_directory(input_directory, backup_directory)

    print("正在重命名备份目录中的图片文件...")
    rename_image_files(backup_directory)

    print("正在删除备份目录中的txt和excel文件...")
    delete_specified_files(backup_directory)

    print("操作完成。")

if __name__ == "__main__":
    main()