1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import os import shutil
def find_same_name_files(root_folder): same_name_files = {} for root, dirs, files in os.walk(root_folder): for file in files: file_name, file_extension = os.path.splitext(file) if file_name in same_name_files: same_name_files[file_name].append(file) else: same_name_files[file_name] = [file]
result = {name: files for name, files in same_name_files.items() if len(files) > 1} return result
def rename_files(same_name_files_dict): for file_names in same_name_files_dict.values(): for file in file_names: file_name, file_extension = os.path.splitext(file) new_file_name = file_name + file_extension old_file_path = os.path.join(os.path.dirname(file), file) new_file_path = os.path.join(os.path.dirname(file), new_file_name) shutil.move(old_file_path, new_file_path)
def replace_file_names_in_content(root_folder, extensions, old_to_new_names): for root, dirs, files in os.walk(root_folder): for file in files: file_extension = os.path.splitext(file)[1][1:] if file_extension in extensions or not extensions: file_path = os.path.join(root, file) with open(file_path, 'r') as f: content = f.read() for old_name, new_name in old_to_new_names.items(): content = content.replace(old_name, new_name) with open(file_path, 'r+') as f: f.write(content)
if __name__ == "__main__": root_folder = input("请输入要遍历的文件夹路径: ") same_name_files = find_same_name_files(root_folder)
if same_name_files: print("文件名一致但后缀名不同的文件明细:") for name, files in same_name_files.items(): print(f"{name}: {files}")
rename_files(same_name_files)
old_to_new_names = {os.path.splitext(file)[0]: file for file in os.listdir(root_folder)} extensions_to_process = input("请输入要处理的文件扩展名(多个用逗号隔开,留空则处理所有文件): ").split(",") replace_file_names_in_content(root_folder, extensions_to_process, old_to_new_names) else: print("未找到文件名一致但后缀名不同的文件。")
|