我使用了 hashlib(它在 Python 2.6/3.0 中替换了 md5),如果我打开一个文件并将其内容放入hashlib.md5()函数中,它工作得很好。
hashlib.md5()
问题在于非常大的文件,它们的大小可能超过 RAM 大小。
如何在不将整个文件加载到内存的情况下获取文件的 MD5 哈希?
将文件分成 8192 字节的块(或其他 128 字节的倍数),并使用update().
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