Was Ist Die Beste Python-Zip-Modul Zum Umgang Mit Großen Dateien?
EDIT: Speziell Kompression und Extraktion Geschwindigkeiten.
Irgendwelche Vorschläge?
Dank
- haben Sie verglichen die Leistung von zipfile, um die Verwendung von zip - /unzip direkt in der shell?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also machte ich einen random-ish großes zipfile:
d.h., 116 MB mit 23.4 K Dateien und zeitgesteuerte Dinge:
dies ist der vom system bereitgestellten commandline unzip binary -- kein Zweifel, wie fein abgestimmt und optimiert als ein reines C-executable. Dann (nach Reinigung /tmp;-)...:
...und das ist Python mit seiner standard-Bibliothek, die ein wenig mehr Ansprüche an CPU-Zeit, aber über 10% schneller in real, das ist, die verstrichene Zeit.
Du bist willkommen, wiederholen Sie diese Messungen natürlich (auf einer bestimmten Plattform-wenn es CPU-arm, - e.g eine langsame ARM-chip, dann Python-zusätzliche Anforderungen an CPU-Zeit kann am Ende macht es langsamer -- und Ihre speziellen Zip-Dateien von Interesse, da jedes der großen zipfile wird eine sehr unterschiedliche Mischung und ziemlich vielleicht Leistung). Aber was schlägt mich ist, dass gibt es nicht so viel Platz zum bauen, eine Python-Erweiterung, die viel schneller als der gute, alte
zipfile
-- da Python mit es besser ist als die pure-C, system-inklusive entpacken!-)Für den Umgang mit großen Dateien, ohne Sie zu laden in den Speicher, verwenden Sie die stream-basierte Methoden in Python-2.6-version von
zipfile
wieZipFile.open
. Nicht verwendenextract
oderextractall
es sei denn, Sie haben stark desinfiziert die Dateinamen in der ZIP.(Sie verwendet zu haben, um
read
alle bytes in den Speicher, zu hacken oder um es wie zipstream; diese ist mittlerweile veraltet.)zipfile.open()
um tatsächlich etwas schneller als das öffnen der gleichen Anzahl von Dateien aus dem Dateisystem (d.h. extrahiert, die zuvor aus einer .zip-Archiv). Dies ist wahrscheinlich, weilzipfile.open()
verwendet, die bereits geöffnet ist .zip und benötigt nicht den overhead der Datei-system-Verzeichnis und öffnen von Datei-Operationen. Disclaimer: ich hatte zu viele kleine Dateien mit einer schwachen Verdichtung. YMMV, bei größeren Dateien oder wenn es nicht so viele Dateien in dem Archiv. Früher habe ich Python 3.5.3.