[FIXED] Python-Lesen/Schreiben vs. Shutil-Kopie

Ausgabe

Ich muss auf meinen Server hochgeladene Dateien speichern (maximale Dateigröße beträgt 10 MB) und habe diese Antwort gefunden , die perfekt funktioniert. Ich frage mich jedoch, was der Sinn der Verwendung des shutilModuls ist und was der Unterschied zwischen diesem ist:

file_location = f"files/{uploaded_file.filename}"
with open(file_location, "wb+") as file_object:
    file_object.write(uploaded_file.file.read())

und das:

import shutil

file_location = f"files/{uploaded_file.filename}"
with open(file_location, "wb+") as file_object:
    shutil.copyfileobj(uploaded_file.file, file_object) 

Während meiner Programmiererfahrung bin ich shutilmehrmals auf module gestoßen, kann aber immer noch nicht herausfinden, welche Vorteile es gegenüber .read()/ hat .write().

Lösung

Ihre Methode erfordert, dass sich die gesamte Datei im Speicher befindet. shutilkopiert in Blöcken, sodass Sie Dateien kopieren können, die größer als der Arbeitsspeicher sind. Außerdem verfügt shutiles über Routinen zum Kopieren von Dateien nach Namen, sodass Sie sie überhaupt nicht öffnen müssen, und es kann die Berechtigungen, den Besitz und die Zeitstempel für Erstellung/Änderung/Zugriff beibehalten.


Beantwortet von –
Tim Roberts


Antwort geprüft von –
Candace Johnson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like