我使用SHA1哈希来识别目录中的相同文件,然后删除重复项。每当我运行我的脚本时,似乎为我的大多数文件创建了适当的哈希。但是,我有几个非常不同的文件,它们会产生相同的哈希值。我知道这样的碰撞几乎不可能发生,所以我想知道下面的代码是否有问题:
hashmap = {}
for path, dirs, files in os.walk(maindirectory):
for filename in files:
fullname = os.path.join(path, filename)
with open(fullname) as f:
d = f.read()
h = hashlib.sha1(d).hexdigest()
filelist = hashmap.setdefault(h, [])
filelist.append(fullname)
# delete records in dictionary that have only 1 item (meaning no duplicate)
for k, v in hashmap.items():
if len(v) == 1:
del hashmap[k]
当我返回我的字典,hashmap时,有一些可预测的重复项,然后有一个散列有大约40个唯一文件。任何建议,提示或解释将非常感谢!