„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So berechnen Sie effizient den MD5-Hash großer Dateien in Python

So berechnen Sie effizient den MD5-Hash großer Dateien in Python

Veröffentlicht am 04.11.2024
Durchsuche:158

How to Efficiently Compute MD5 Hash of Large Files in Python

Berechnen Sie den MD5-Hash großer Dateien effizient in Python

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-Implementierung

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()

Beispielverwendung

Um den MD5-Hash einer Datei zu berechnen, verwenden Sie die folgende Syntax:

with open(filename, 'rb') as f:
    md5_hash = md5_for_file(f)

Die Variable md5_hash enthält den berechneten MD5-Hash als byteähnliches Objekt.

Weitere Überlegungen

Stellen Sie sicher, dass Sie die Datei im Binärformat öffnen Modus ('rb'), um falsche Ergebnisse zu vermeiden. Für eine umfassende Dateiverarbeitung sollten Sie die folgende Funktion in Betracht ziehen:

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()

Diese Funktion verwendet einen Dateipfad und gibt den MD5-Hash als hexadezimale Zeichenfolge zurück.

Durch die Verwendung dieser Techniken können Sie MD5-Hashes für große Dateien effizient berechnen, ohne dass Probleme auftreten Speicherbeschränkungen.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729387820 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3