ホームページ  >  記事  >  バックエンド開発  >  Python で大きなファイルの MD5 ハッシュを効率的に計算する方法

Python で大きなファイルの MD5 ハッシュを効率的に計算する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-20 09:52:301014ブラウズ

How to Efficiently Compute MD5 Hash of Large Files in Python

Python で大きなファイルの MD5 ハッシュを効率的に計算する

特定のシナリオでは、使用可能な RAM を超える大きなファイルの MD5 ハッシュを計算する必要があります。ネイティブ Python 関数 hashlib.md5() は、ファイル全体をメモリにロードする必要があるため、このようなシナリオには適していません。

この制限を克服するには、ファイルを管理可能なチャンクに分けて読み取り、ハッシュを繰り返し更新します。これにより、メモリ制限を超えずに効率的なハッシュ計算が可能になります。

コードの実装

<code class="python">import hashlib

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">with open(filename, 'rb') as f:
    md5_hash = md5_for_file(f)</code>
md5_hash 変数には、計算された MD5 ハッシュがバイトのようなオブジェクトとして含まれます。

その他の考慮事項

必ずバイナリ モード ('rb) でファイルを開いてください') 不正確な結果を避けるため。包括的なファイル処理については、次の関数を検討してください。

<code class="python">import os
import hashlib

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>
この関数はファイル パスを取得し、MD5 ハッシュを 16 進文字列として返します。

これらの手法を利用することで、効率的に計算できます。メモリ制限に遭遇することなく、大きなファイルの MD5 ハッシュを実行します。

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

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