Heim  >  Artikel  >  Backend-Entwicklung  >  Wie berechnet man MD5-Hashes großer Dateien in Python ohne Speicherbeschränkungen?

Wie berechnet man MD5-Hashes großer Dateien in Python ohne Speicherbeschränkungen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-20 11:03:30628Durchsuche

How to Compute MD5 Hashes of Large Files in Python Without Memory Limitations?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn