Mengira Hash MD5 bagi Fail Besar dalam Python
Apabila bekerja dengan fail yang sangat besar, kaedah tradisional mengira cincang MD5 menggunakan perpustakaan hashlib menjadi tidak praktikal kerana ia memerlukan memuatkan keseluruhan fail ke dalam ingatan. Pendekatan ini mungkin meletihkan sumber sistem, yang membawa kepada ralat dan kelembapan.
Penyelesaian: Pencincangan Potongan
Untuk menangani isu ini, teknik yang dipanggil pencincangan chunked boleh digunakan untuk mengira Cincang MD5 secara berperingkat tanpa memuatkan keseluruhan fail ke dalam memori. Ini melibatkan:
Pelaksanaan Kod:
Fungsi Python berikut md5_for_file() melaksanakan pencincangan potongan:
<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>
Untuk menggunakan fungsi ini, pastikan anda membuka fail dengan mod binari (rb).
Kaedah Lengkap:
Untuk kemudahan, berikut ialah kaedah lengkap generate_file_md5() yang menggabungkan pencincangan ketulan dengan pembukaan fail dalam satu langkah:
<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>
Kaedah ini mengembalikan cincangan MD5 berkod hex bagi fail yang ditentukan sebagai rentetan. Anda boleh mengesahkan keputusan menggunakan alat luaran seperti jacksum sebagai perbandingan.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Hash MD5 Fail Besar dalam Python dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!