在Python(1,2,3)中,对计算文件散列的堆栈溢出有一些很好的讨论,包括太大而无法放入内存的文件。最终的解决方案是这样的(从#3中稍加编辑):
def md5_file(path, size):
m = hashlib.md5()
with open(path, 'rb') as f:
b = f.read(size)
while len(b) > 0:
m.update(b)
b = f.read(size)
return m.digest()
如果您不需要哈希函数是加密安全的(我不需要),那么就有pyfasthash(看起来也叫pyhash),正如here所讨论的。不幸的是,pyfasthash的哈希类缺少上面使用的update
方法。我还没有很幸运地弄清楚还能做些什么;Python-C代码混合体我无法理解。我只是把整个文件读入记忆,就像这样:
with open(path, 'rb') as afile:
return hasher(afile.read())
这种方法的缺点是:
有什么方法可以让我更快地计算文件的哈希值吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐