在 Python 中计算大文件的 MD5 哈希
虽然使用 Python 的 hashlib 模块计算小文件的 MD5 哈希很简单文件,对于超出可用内存的大文件来说变得不切实际。本文探讨了应对这一挑战的实用解决方案。
为了规避内存限制,需要授予 hashlib 访问文件块的权限,而不是一次性访问整个文件。以下 Python 函数以指定大小的块读取文件并累积部分 MD5 哈希值。通过为 block_size 参数设置合适的大小(默认值:2^20),它可以有效地管理超出 RAM 限制的文件大小。
<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>
为了确保正确的结果,请使用 'rb' 以二进制模式打开文件是必不可少的。
为了获得更全面的方法,辅助函数可以封装所有必要的步骤:
<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>
使用 jacksum 等工具交叉检查结果可确保计算的 MD5 哈希值的准确性.
以上是如何在Python中计算大文件的MD5哈希而没有内存限制?的详细内容。更多信息请关注PHP中文网其他相关文章!