以下是使用Python编写的示例代码,用于比较文件的哈希值,并返回文件名而不仅仅是哈希值:
import hashlib
import os
def compare_files_by_hash(directory):
file_hashes = {}
# 获取目录下的所有文件
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
# 计算文件的哈希值
with open(file_path, 'rb') as f:
file_hash = hashlib.md5(f.read()).hexdigest()
# 保存文件名和哈希值的对应关系
file_hashes[file] = file_hash
# 比较文件的哈希值,返回文件名
duplicate_files = []
for file1, hash1 in file_hashes.items():
for file2, hash2 in file_hashes.items():
if file1 != file2 and hash1 == hash2 and file2 not in duplicate_files:
duplicate_files.append(file2)
return duplicate_files
# 比较指定目录下的文件的哈希值并返回重复的文件名
duplicate_files = compare_files_by_hash('/path/to/directory')
# 打印重复的文件名
for file in duplicate_files:
print(file)
在上述示例代码中,我们首先定义了一个compare_files_by_hash
函数,该函数接受一个目录路径作为参数。然后,我们遍历指定目录下的所有文件,计算每个文件的哈希值,并将文件名和哈希值的对应关系保存在字典file_hashes
中。
接下来,我们再次遍历file_hashes
字典,比较文件的哈希值。如果两个文件的哈希值相等且文件名不同,则将文件名添加到duplicate_files
列表中。
最后,我们返回duplicate_files
列表,其中包含重复的文件名。您可以根据需要对其进行进一步处理或打印出来。请注意,您需要将/path/to/directory
替换为您希望比较文件的目录的实际路径。
下一篇:比较文件的时间戳与当前时间戳