代码:
import os
class BatchRenameFiles:
def __init__(self, folder_path, prefix='', suffix='', replace_dict=None, include_ext=False):
"""
初始化文件夹批量重命名工具
:param folder_path: 目标文件夹路径
:param prefix: 文件名前缀
:param suffix: 文件名后缀
:param replace_dict: 替换规则字典,格式为 {'old_str': 'new_str'}
:param include_ext: 是否在重命名中保留扩展名
"""
self.folder_path = folder_path
self.prefix = prefix
self.suffix = suffix
self.replace_dict = replace_dict if replace_dict else {}
self.include_ext = include_ext
def rename_files(self):
"""
执行批量重命名
"""
# 获取目标文件夹中的所有文件
try:
files = os.listdir(self.folder_path)
except FileNotFoundError:
print(f"文件夹路径 {self.folder_path} 不存在,请检查路径!")
return
# 遍历文件夹中的每个文件
for file_name in files:
old_file_path = os.path.join(self.folder_path, file_name)
# 跳过文件夹,只处理文件
if os.path.isdir(old_file_path):
continue
# 分离文件名与扩展名
file_base, file_extension = os.path.splitext(file_name)
# 替换字符串
new_file_base = file_base
for old_str, new_str in self.replace_dict.items():
new_file_base = new_file_base.replace(old_str, new_str)
# 添加前缀和后缀
new_file_name = self.prefix + new_file_base + self.suffix
# 保留扩展名
if self.include_ext:
new_file_name += file_extension
new_file_path = os.path.join(self.folder_path, new_file_name)
# 重命名文件
if old_file_path != new_file_path:
os.rename(old_file_path, new_file_path)
print(f"文件 '{file_name}' 重命名为 '{new_file_name}'")
print("文件重命名完成!")
# 示例使用
if __name__ == "__main__":
# 设置文件夹路径和重命名参数
folder_path = "example_folder" # 替换为实际文件夹路径
prefix = "new_" # 文件名前缀
suffix = "_backup" # 文件名后缀
replace_dict = {"old": "new", "sample": "test"} # 替换规则
include_ext = True # 保留扩展名
# 创建批量重命名工具实例并执行重命名
renamer = BatchRenameFiles(folder_path, prefix, suffix, replace_dict, include_ext)
renamer.rename_files()
代码说明:
本代码实现了一个批量重命名工具,可以根据给定的规则和文件夹路径批量修改文件名。支持添加前缀、后缀,替换文件名中的特定字符,并且可以选择是否保留文件扩展名。
-
BatchRenameFiles类:这是批量重命名工具的核心类,包含初始化方法和重命名操作方法。可以通过初始化时指定需要的参数,如目标文件夹路径、文件名前后缀、替换规则以及是否保留扩展名等。
-
rename_files方法:这个方法是执行重命名操作的主体。它遍历指定文件夹中的所有文件,并根据给定规则修改文件名。首先,会对文件名进行指定的字符串替换,然后根据需求添加前后缀,最后通过
os.rename函数重命名文件。 -
使用了Python标准库os:主要用于获取文件夹中的文件列表以及执行文件重命名操作。
使用说明:
-
设置文件夹路径:
- 你需要指定目标文件夹的路径
folder_path,该文件夹中的文件将会被批量重命名。
- 你需要指定目标文件夹的路径
-
添加前缀和后缀:
- 可以通过
prefix和suffix参数,分别指定文件名前后的文本内容(例如,prefix = "new_"将会在每个文件名的开头添加new_)。
- 可以通过
-
定义替换规则:
- 通过
replace_dict参数,可以定义一个字典来替换文件名中的指定字符串。例如,{"old": "new"}会将文件名中的old替换为new。
- 通过
-
保留扩展名:
include_ext参数决定是否在重命名时保留文件扩展名。例如,如果文件是test.txt,并且include_ext = True,那么重命名后仍会保留.txt扩展名。
-
执行重命名:
- 执行
rename_files方法后,工具会根据配置对文件夹内的每个文件进行重命名,并输出每个文件的重命名结果。
- 执行
示例使用:
if __name__ == "__main__":
folder_path = "example_folder" # 文件夹路径
prefix = "new_" # 文件名前缀
suffix = "_backup" # 文件名后缀
replace_dict = {"old": "new", "sample": "test"} # 字符替换规则
include_ext = True # 是否保留扩展名
renamer = BatchRenameFiles(folder_path, prefix, suffix, replace_dict, include_ext)
renamer.rename_files()
示例运行结果:
假设文件夹 example_folder 中有以下文件:
old_sample.txtold_file.pdfsample_data.csv
如果我们设置了前缀 new_、后缀 _backup 和替换规则 {"old": "new", "sample": "test"},则文件会被重命名为:
new_test_file_backup.txtnew_file_backup.pdftest_data_backup.csv
注意事项:
- 文件夹路径必须是有效的,并且程序会忽略文件夹,只处理文件。
- 重命名后,如果文件名发生变化,原文件会被替换成新文件名。
- 如果文件已经按照重命名规则存在(即重命名后的文件名相同),程序不会重新命名该文件。
功能特点:
- 批量处理:能够对文件夹中所有符合条件的文件进行批量重命名。
- 灵活的重命名规则:可以根据前缀、后缀以及替换规则自定义文件名格式。
- 扩展性:可以进一步扩展功能,例如添加日志记录、跳过特定类型的文件等。
这个批量重命名工具在日常工作中非常实用,特别是在处理大量文件时,能够帮助你快速完成文件名修改任务。

1万+

被折叠的 条评论
为什么被折叠?



