ホームページ  >  記事  >  バックエンド開発  >  メモリの過負荷を発生させずに Python で大きなファイルの MD5 ハッシュを計算する方法

メモリの過負荷を発生させずに Python で大きなファイルの MD5 ハッシュを計算する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-20 10:13:30782ブラウズ

How to Calculate MD5 Hashes for Large Files in Python without Memory Overloading?

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」) で開かれています。次に、関数はファイルを反復処理し、ハッシュを更新し、最終ハッシュの 16 進表現を返します。

結果のクロスチェック

精度を確保するには、クロスを考慮してください。 -「jacksum」のような専用ツールで結果を確認する:

jacksum -a md5 <filename>
これにより、比較のための独立した MD5 ハッシュ計算が提供されます。

以上がメモリの過負荷を発生させずに Python で大きなファイルの MD5 ハッシュを計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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