在kimichat中输入提示词:

你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:

1、打开文件夹D:\downloads;

2、哈希值比较比较里面所有的文件,如果文件相同,那么移动多余的文件到D:\downloads\delete,只保留一个文件即可;

如果文件标题名称中有字符“(1)”,也移动到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('文件处理完成。')