我使用了hashlib(在Python 2.6 / 3.0中取代了md5),如果我打开一个文件并将其内容放入hashlib.md5()
函数中,它就可以正常工作。
问题在于非常大的文件,其大小可能超过RAM大小。
如何在不将整个文件加载到内存的情况下获取文件的MD5哈希?
将文件分成8192字节的块(或128字节的其他倍数),然后使用连续将其馈入MD5 update()
。
这利用了MD5具有128字节摘要块(8192为128×64)这一事实。由于您没有将整个文件读入内存,因此占用的内存不会超过8192字节。
在Python 3.8+中,您可以执行
import hashlib
with open("your_filename.txt", "rb") as f:
file_hash = hashlib.md5()
while chunk := f.read(8192):
file_hash.update(chunk)
print(file_hash.digest())
print(file_hash.hexdigest()) # to get a printable str instead of bytes
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句