import os
import re
def clean_filename(filename):
# 保留括号内的数字
filename = re.sub(r'(?<!\()\d+(?!\))', '', filename)
# 将特殊符号(包括下划线)转换为空格,但保留括号、逗号和句点
filename = re.sub(r'[^\w\s\(\),\.]|_', ' ', filename)
# 去除文件名开头和结尾的空格
filename = filename.strip()
return filename
def is_image_file(filename):
return filename.lower().endswith(('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff'))
def unique_file_name(directory, filename):
base, extension = os.path.splitext(filename)
counter = 1
new_filename = filename
while os.path.exists(os.path.join(directory, new_filename)):
new_filename = f"{base} ({counter}){extension}"
counter += 1
return new_filename
def rename_files_in_directory(directory):
for root, dirs, files in os.walk(directory):
for file in files:
if is_image_file(file):
new_name = clean_filename(file)
new_name = unique_file_name(root, new_name)
old_file_path = os.path.join(root, file)
new_file_path = os.path.join(root, new_name)
os.rename(old_file_path, new_file_path)
print(f'已重命名: {file} -> {new_name}')
def main():
directory = input("请输入要处理的文件夹路径: ")
if not os.path.exists(directory):
print("路径不存在,请输入有效的文件夹路径。")
return
rename_files_in_directory(directory)
print("处理完成。")
if __name__ == "__main__":
main()