Python で大きなファイルの MD5 ハッシュを計算する
Python の hashlib モジュールは、暗号化ハッシュを計算するための便利なインターフェイスを提供します。ただし、サイズがシステム メモリを超える非常に大きなファイルの場合、hashlib を直接使用すると問題が発生する可能性があります。解決策: プログレッシブ ハッシュ
この問題に対処するために、プログレッシブ ハッシュを採用しています。ファイルを管理可能なチャンクに分割して読み取ることによって。このアプローチにより、過剰なメモリを消費することなく、ファイルの内容全体が確実にハッシュされます。この手法を実装するサンプル Python 関数を次に示します。<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>
<code class="python">with open("filename", "rb") as f: md5 = md5_for_file(f)</code>
注ファイル モードで
正確な結果を得るには、必ず「rb」を使用してファイルをバイナリ モードで開いてください。 「r」を使用すると、計算が正しく行われない可能性があります。その他の考慮事項
便宜上、関数の改良版を以下に示します。<code class="python">import hashlib import os def generate_file_md5(rootdir, filename): m = hashlib.md5() with open(os.path.join(rootdir, filename), "rb") as f: buf = f.read() while buf: m.update(buf) buf = f.read() return m.hexdigest()</code>
以上がメモリを過剰消費せずにPythonで大きなファイルをハッシュする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。