Python で大きなファイルの MD5 ハッシュを計算する
Python の hashlib モジュールを使用してファイルの MD5 ハッシュを計算するのは、小規模なファイルの場合は簡単です利用可能なメモリを超える大きなファイルの場合は実用的ではありません。この記事では、この課題に対する実用的な解決策を検討します。メモリ制限を回避するには、hashlib にファイル全体ではなくファイルのチャンクへのアクセスを一度に与える必要があります。次の Python 関数は、指定されたサイズのチャンクでファイルを読み取り、部分的な MD5 ハッシュを蓄積します。 block_size パラメータに適切なサイズ (デフォルト: 2^20) を設定することで、RAM 制限を超えたファイル サイズを効果的に管理できます。<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>
<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>
以上がメモリ制限なしでPythonで大きなファイルのMD5ハッシュを計算する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。