Berechnen des MD5-Hashs großer Dateien in Python
Bei der Arbeit mit extrem großen Dateien werden traditionelle Methoden zur Berechnung von MD5-Hashes mithilfe der Hashlib-Bibliothek verwendet unpraktisch, da sie das Laden der gesamten Datei in den Speicher erfordern. Dieser Ansatz kann die Systemressourcen erschöpfen, was zu Fehlern und Verlangsamungen führt.
Lösung: Chunked Hashing
Um dieses Problem zu beheben, kann zur Berechnung eine Technik namens Chunked Hashing eingesetzt werden MD5-Hash inkrementell, ohne die gesamte Datei in den Speicher zu laden. Dies beinhaltet:
Code-Implementierung:
Die folgende Python-Funktion md5_for_file() implementiert Chunked-Hashing:
<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>
Um diese Funktion zu verwenden, stellen Sie sicher, dass Sie die Datei im Binärmodus (rb) öffnen.
Vollständige Methode:
Der Einfachheit halber Hier ist eine vollständige Methode „generate_file_md5()“, die Chunked-Hashing mit dem Öffnen von Dateien in einem Schritt kombiniert:
<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>
Diese Methode gibt den hexadezimal codierten MD5-Hash der angegebenen Datei als Zeichenfolge zurück. Sie können die Ergebnisse zum Vergleich mit externen Tools wie Jacksum überprüfen.
Das obige ist der detaillierte Inhalt vonWie berechnet man den MD5-Hash großer Dateien in Python effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!