ホームページ >バックエンド開発 >Python チュートリアル >Python で大きなファイルの MD5 ハッシュを効率的に計算するにはどうすればよいですか?
Python で大きなファイルの MD5 ハッシュを計算する
非常に大きなファイルを扱う場合、hashlib ライブラリを使用して MD5 ハッシュを計算する従来の方法は次のようになります。ファイル全体をメモリにロードする必要があるため、実用的ではありません。このアプローチでは、システム リソースが使い果たされ、エラーや速度低下が発生する可能性があります。解決策: チャンク ハッシュ
この問題に対処するには、チャンク ハッシュと呼ばれる手法を使用して計算を行うことができます。 MD5 ハッシュは、ファイル全体をメモリにロードせずに段階的にハッシュします。これには以下が含まれます:コードの実装:
次の Python 関数 md5_for_file() は、チャンク ハッシュを実装します。<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) でファイルを開いてください。
完全なメソッド:
便宜上、これは、チャンク ハッシュとファイル オープンを 1 ステップで組み合わせた完全なメソッドgenerate_file_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>このメソッドは、指定されたファイルの 16 進数でエンコードされた MD5 ハッシュを文字列として返します。比較のために jacksum などの外部ツールを使用して結果を検証できます。
以上がPython で大きなファイルの MD5 ハッシュを効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。