首页  >  文章  >  后端开发  >  如何在Python中计算大文件的MD5哈希而没有内存限制?

如何在Python中计算大文件的MD5哈希而没有内存限制?

Patricia Arquette
Patricia Arquette原创
2024-10-20 11:03:30721浏览

How to Compute MD5 Hashes of Large Files in Python Without Memory Limitations?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn