在处理大量文件时,手动进行文件重命名和删除特定类型文件通常是耗时且易出错的。为了提高效率和准确性,我开发了一个Python脚本,这个脚本可以自动化执行这些常见的文件管理任务。以下是脚本的主要功能和操作流程:
功能概述
-
目录备份
- 在进行任何文件操作之前,脚本会自动创建指定目录的备份。这一步骤是为了防止在文件处理过程中发生意外,从而保护原始数据。
-
文件重命名
- 对于图片文件(支持
.png
、.jpg
、.jpeg
、.gif
格式),脚本会将文件名中的第一个下划线(_
)替换为逗号加空格(,
),其余下划线替换为空格。这一处理方式旨在改善文件命名的可读性,特别是对于那些包含多个下划线的文件名。
- 对于图片文件(支持
-
删除特定类型文件
- 脚本会自动删除所有
.txt
(文本文件)和.xlsx
(Excel电子表格文件)。这一功能适用于清理不需要的文件类型,从而整理出更干净的目录结构。
- 脚本会自动删除所有
操作流程
-
用户输入
- 用户通过命令行界面输入需要处理的目录路径。
-
检查目录存在性
- 脚本会首先检查用户指定的目录是否存在,以防止尝试访问不存在的目录。
-
创建目录备份
- 在进行任何修改之前,脚本会自动在指定目录中创建一个名为
_backup
的子目录,用于存放原始数据的备份。
- 在进行任何修改之前,脚本会自动在指定目录中创建一个名为
-
重命名图片文件
- 在备份目录中,脚本将遍历所有图片文件,并按照上述规则进行重命名。
-
删除特定类型文件
- 同样在备份目录中,脚本将查找并删除所有
.txt
和.xlsx
文件。
- 同样在备份目录中,脚本将查找并删除所有
-
操作完成提示
- 完成所有操作后,脚本会输出完成提示,告知用户已完成文件处理。
适用场景
这个脚本特别适合于需要快速整理大量图片文件、统一文件命名格式,并删除不必要文件的场景。它通过自动化这些常见的文件管理任务,可以节省大量的时间和精力,同时降低人工操作错误的风险。无论是个人用户还是企业用户,都可以从中受益。
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()
标签:文件,下划线,MJ,逗号,file,new,directory,path,os From: https://www.cnblogs.com/zly324/p/17914904.html