Ich versuche, Dateien aus einer Zip-Datei mit Python 2.7.1 (unter Windows, fyi) zu extrahieren und jeder meiner Versuche zeigt extrahierte Dateien mit Modified Date = Zeitpunkt der Extraktion (was falsch ist).
%Vor%Ich habe auch versucht, die .extractall-Methode mit den gleichen Ergebnissen zu verwenden.
%Vor%Kann mir jemand sagen, was ich falsch mache?
Ich würde gerne glauben, dass dies möglich ist, ohne die modifizierte Zeit nach hier
Nun, es dauert ein wenig Nachbearbeitung, aber es ist nicht so schlimm:
%Vor%Okay, vielleicht ist so schlimm.
Basierend auf Ethan Fumans Antwort habe ich diese Version (mit Python 2.6.6) entwickelt, die ein wenig mehr Sinn ergibt:
%Vor%Dies extrahiert in das aktuelle Arbeitsverzeichnis und verwendet die ZipFile.extract () -Methode, um die Daten zu schreiben, anstatt die Datei selbst zu erstellen.
Basierend auf Bers Antwort habe ich diese Version (unter Verwendung von Python 2.7.11) entwickelt, die auch Verzeichnis-Mod-Daten berücksichtigt.
%Vor% Da Verzeichnisse geändert werden, während die extrahierten Dateien in ihnen erstellt werden, scheint es keinen Sinn zu geben, ihre Daten mit os.utime
zu setzen, bis die Extraktion abgeschlossen ist, so dass diese Version die Verzeichnisnamen und ihre Zeitstempel speichert das Ende.
Basierend auf der Antwort von Jia103 habe ich eine Funktion (mit Python 2.7.14) entwickelt, die Verzeichnis- und Dateidaten speichert, NACHDEM alles extrahiert wurde. Dies isoliert jede Hässlichkeit in der Funktion und Sie können auch zipfile.Zipfile.extractAll () oder eine beliebige gewünschte Methode zum Extrahieren von Zip verwenden:
%Vor%Um Daten zu erhalten, rufen Sie diese Funktion einfach auf, nachdem Ihr Extrakt fertig ist.
Hier ist ein Beispiel, von einem Skript, das ich in zip / unzip-Spielspeicherverzeichnisse geschrieben habe:
%Vor%Danke allen für eure früheren Antworten!
Tags und Links python zip extraction