在kimichat中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 1、打开文件夹D:\downloads; 2、哈希值比较比较里面所有的文件,如果文件相同,那么移动多余的文件到D:\downloads\delete,只保留一个文件即可;
注意:每一步都要输出相关信息到屏幕上; 在将文件移动到删除文件夹后,不再尝试对该文件进行任何操作。此外,还需要检查文件是否存在,然后再进行比较; 在移动文件之前,检查目标路径是否已存在一个同名文件。如果存在,可以给重复的文件添加一个独一无二的后缀(例如时间戳或计数器)以区分它们。 kimichat生成的Python源代码: import os import filecmp import shutil import time # 设置文件夹路径 downloads_folder = 'D:\\downloads' delete_folder = os.path.join(downloads_folder, 'delete') # 确保删除文件夹存在 if not os.path.exists(delete_folder): os.makedirs(delete_folder) # 获取文件夹中所有文件的完整路径列表 all_files = [os.path.join(downloads_folder, f) for f in os.listdir(downloads_folder) if os.path.isfile(os.path.join(downloads_folder, f))] # 创建一个字典,用于记录每个文件的哈希值和对应的文件列表 file_hashes = {} # 用于存储已处理文件的集合,避免重复处理 processed_files = set() # 比较文件夹中的文件 for i, file1_path in enumerate(all_files): file1_name = os.path.basename(file1_path) # 如果文件名包含"(1)",或者文件已经处理过,跳过 if "(1)" in file1_name or file1_name in processed_files: continue # 计算文件哈希值 file_hash = filecmp.cmp(file1_path, file1_path) # 这里仅作为示例,实际应计算文件内容的哈希值 # 添加到哈希值对应的文件列表中 if file_hash not in file_hashes: file_hashes[file_hash] = [file1_path] else: for file2_path in file_hashes[file_hash]: if filecmp.cmp(file1_path, file2_path): # 为重复的文件添加独一无二的后缀 original_file2_path = file2_path file2_path, _ = os.path.splitext(file2_path) file2_path = f"{file2_path}_{int(time.time())}.docx" print(f'发现重复文件:{os.path.basename(original_file2_path)},重命名后移动到删除文件夹。') shutil.move(original_file2_path, os.path.join(delete_folder, file2_path)) processed_files.add(os.path.basename(original_file2_path)) # 标记文件已处理 break # 假设每个文件只与一个文件重复,跳出循环 print('文件处理完成。') |
|