Berechnung des MD5-Hashs großer Dateien in Python
Während die Verwendung des Hashlib-Moduls von Python zur Berechnung des MD5-Hashs einer Datei für kleine Dateien unkompliziert ist Bei großen Dateien, die den verfügbaren Speicher überschreiten, wird es unpraktisch. In diesem Artikel wird eine praktische Lösung für diese Herausforderung untersucht.
Um das Speicherlimit zu umgehen, muss Hashlib Zugriff auf Teile der Datei und nicht auf die gesamte Datei auf einmal gewährt werden. Die folgende Python-Funktion liest eine Datei in Blöcken einer angegebenen Größe und akkumuliert die Teil-MD5-Hashes. Durch Festlegen einer geeigneten Größe für den block_size-Parameter (Standard: 2^20) werden Dateigrößen effektiv über die RAM-Beschränkungen hinaus verwaltet.
<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 korrekte Ergebnisse zu gewährleisten, öffnen Sie die Datei im Binärmodus mit „rb“. ist unerlässlich.
Für einen umfassenderen Ansatz kann eine Hilfsfunktion alle notwendigen Schritte kapseln:
<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>
Die Gegenprüfung der Ergebnisse mit Tools wie Jacksum stellt die Genauigkeit der berechneten MD5-Hashes sicher .
Das obige ist der detaillierte Inhalt vonWie berechnet man MD5-Hashes großer Dateien in Python ohne Speicherbeschränkungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!