通过hashlib查找重复文件?

通过hashlib查找重复文件?,第1张

通过hashlib查找重复文件

识别重复项的显而易见的工具是哈希表。除非您使用 大量 文件,否则可以执行以下 *** 作:

from collections import defaultdictfile_dict = defaultdict(list)for filename in files:    file_dict[get_file_hash(filename)].append(filename)

在此过程结束时,

file_dict
将包含每个唯一哈希的列表;当两个文件具有相同的哈希时,它们都将出现在该哈希的列表中。然后过滤字典以查找长度超过1的值列表,并比较文件以确保它们相同-
如下所示:

for duplicates in file_dict.values():   # file_dict.itervalues() in Python 2    if len(duplicates) > 1:        # double-check reported duplicates and generate output

或这个:

duplicates = [files for files in file_dict.values() if len(files) > 1]

get_file_hash
可以使用MD5;或者它可以像Ramchandra
Apte在上面的注释中建议的那样简单地获取文件的开头和结尾字节;或者它可以像上面评论中建议的那样简单地使用文件大小。不过,后两种策略中的每一种都更有可能产生误报。您可以将它们组合以减少误报率。

如果你有一个工作 非常
大量的文件,你可以使用一个更复杂的数据结构像一个布隆过滤器。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5632528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存