在 Python 中计算大文件的 MD5 哈希值
简介
确定以下文件的 MD5 哈希值当大文件的大小超过可用内存时,它们可能会带来挑战。本文提出了一种实用的解决方案,无需将整个文件加载到内存中即可计算 MD5 哈希值。
解决方案
要计算大文件的 MD5 哈希值,必须阅读将它们分成可管理的块。以下代码片段演示了这一点:
<code class="python">def md5_for_file(f, block_size=2**20): md5 = hashlib.md5() while True: data = f.read(block_size) if not data: break md5.update(data) return md5.digest()</code>
通过指定合适的块大小,此函数以块的形式读取文件,并不断更新每个块的 MD5 哈希值。
增强代码
要简化该过程,请考虑以下增强代码:
<code class="python">def generate_file_md5(rootdir, filename, blocksize=2**20): m = hashlib.md5() with open(os.path.join(rootdir, filename), "rb") as f: while True: buf = f.read(blocksize) if not buf: break m.update(buf) return m.hexdigest()</code>
这里,文件以二进制模式(“rb”)打开以正确处理二进制数据。然后该函数迭代文件,更新哈希值,并返回最终哈希值的十六进制表示形式。
交叉检查结果
为了确保准确性,请考虑交叉- 使用“jacksum”等专用工具检查结果:
jacksum -a md5 <filename>
这将提供独立的 MD5 哈希计算以供比较。
以上是如何在Python中计算大文件的MD5哈希值而不导致内存过载?的详细内容。更多信息请关注PHP中文网其他相关文章!