In bestimmten Szenarien ist es notwendig, den MD5-Hash großer Dateien zu berechnen, die den verfügbaren RAM überschreiten. Die native Python-Funktion hashlib.md5() ist für solche Szenarien nicht geeignet, da sie erfordert, dass die gesamte Datei in den Speicher geladen wird.
Um diese Einschränkung zu überwinden, besteht ein praktischer Ansatz darin, die Datei in überschaubaren Blöcken zu lesen und Aktualisieren Sie den Hash iterativ. Dies ermöglicht eine effiziente Hash-Berechnung, ohne die Speichergrenzen zu überschreiten.
<code class="python">import hashlib 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 den MD5-Hash einer Datei zu berechnen, verwenden Sie die folgende Syntax:
<code class="python">with open(filename, 'rb') as f: md5_hash = md5_for_file(f)</code>
Die Variable md5_hash enthält den berechneten MD5-Hash als byteähnliches Objekt.
Stellen Sie sicher, dass Sie die Datei im Binärmodus ('rb '), um falsche Ergebnisse zu vermeiden. Betrachten Sie für eine umfassende Dateiverarbeitung die folgende Funktion:
<code class="python">import os import hashlib 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 Funktion nimmt einen Dateipfad und gibt den MD5-Hash als hexadezimale Zeichenfolge zurück.
Durch die Verwendung dieser Techniken können Sie effizient rechnen MD5-Hashes für große Dateien ohne Speicherbeschränkungen.
Das obige ist der detaillierte Inhalt vonSo berechnen Sie effizient den MD5-Hash großer Dateien in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!