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

Linda Hamilton
リリース: 2024-10-20 10:13:30
オリジナル
668 人が閲覧しました

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!