ホームページ  >  記事  >  バックエンド開発  >  メモリ制限なしでPythonで大きなファイルのMD5ハッシュを計算する方法?

メモリ制限なしでPythonで大きなファイルのMD5ハッシュを計算する方法?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-20 11:03:30629ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。