Zippen ist eine elegante Art, mehrere Dateien zu komprimieren und zu einer einzigen zusammenzufassen. Dies spart nicht nur Speicherplatz, sondern auch Bandbreite bei der Übertragung einer Datei über ein Netzwerk. Eine der besten Funktionen von Zip ist, dass es auf allen wichtigen Plattformen funktioniert: Windows, Linux und Mac.
Zip verwendet eine verlustfreie Komprimierung, sodass beim Komprimieren und Dekomprimieren alle Daten erhalten bleiben. Sie können Ihre ZIP-Dateien auch verschlüsseln und entschlüsseln.
Entdecken Sie bei so vielen zu erkundenden Funktionen, wie Sie Dateien mit dem Python-Zipfile-Modul lesen, komprimieren und entpacken können.
Was ist das Zipfile-Modul?
Sie können das standardmäßige Zipfile-Modul verwenden, um Zip-Dateien mit Python zu manipulieren. Mit diesem Modul können Sie Zip-Dateien öffnen und lesen, ihre Metadaten lesen, eine Zip-Datei erstellen, komprimieren und Dateien entpacken. Es stehen drei Komprimierungsmethoden zur Verfügung: Deflate, Bzip2 und LZMA.
Eines der Dinge, die dem Modul fehlen, ist die Fähigkeit, Dateien mit mehreren Festplatten zu verarbeiten, aber es verarbeitet die ZIP64-Erweiterung. Es kann auch Zip-Archive entschlüsseln, aber nicht verschlüsseln. Mit dem Zipfile-Modul können Sie Zip-Datei-Metadaten wie Datum und Uhrzeit der Änderung abrufen. Sie können auch Details wie das zum Erstellen der Datei verwendete Betriebssystem, die Zip-Version und die Dateigröße sowohl im komprimierten als auch im unkomprimierten Format abrufen.
So komprimieren Sie Dateien mit Python
Mit dem Zipfile-Modul von Python können Sie mehrere Dateien in ein Archiv komprimieren. Importieren Sie die Zip-Datei Modul aus dem zip-Datei -Paket, um die erforderlichen ZIP-Vorgänge auszuführen. Auch importieren Die os Modul zum Auswählen und Speichern von Dateien.
Definiere eine Funktion get_all_file_paths(). Es sollte einen Verzeichnisparameter akzeptieren, der den Pfad zu dem Ordner enthält, der die zu komprimierenden Dateien enthält.
Initialisieren Sie eine leere Liste, die die Liste der Dateipfade speichert. Verwenden Sie eine for-Schleife, um den vollständigen Inhalt des Zielverzeichnisses mithilfe von abzurufen os.walk() Funktion. Diese Funktion ruft die Dateinamen in einem Verzeichnisbaum ab, indem sie sich von oben nach unten oder von unten nach oben entlang bewegt. Für jedes Verzeichnis gibt die Funktion ein Drei-Tupel zurück, das root, dirs und files enthält.
Das Stammverzeichnis ist eine Zeichenfolge, die den vollständigen Pfad zum Verzeichnis enthält. Die dirs-Liste enthält alle im Verzeichnis enthaltenen Unterverzeichnisse. Die Dateiliste enthält alle im Verzeichnis vorhandenen Dateien.
Deklarieren Sie innerhalb der Schleife eine weitere Schleife, um die Dateiliste zu durchlaufen. Verwenden Sie die os.path.join() Funktion, um den Namen des Verzeichnisses mit jedem Dateinamen zu kombinieren, um einen vollständigen Pfad zu erstellen. Hängen Sie dann diesen vollständigen Dateinamen an die zuvor erstellte Liste an. Wenn dieser Vorgang abgeschlossen ist, geben Sie die Liste der Dateipfade zurück.
# Importieren Sie die erforderlichen Module
aus zip-Datei importieren Zip-Datei
importieren os# Erstellen Sie eine Funktion, um alle Dateipfade abzurufen
defget_all_file_paths(Verzeichnis):
# Initialisierung einer leeren Liste zum Speichern von Dateipfaden
file_paths = []# durch die Dateien navigieren
fürWurzel, Verzeichnisse, DateienInos.gehen(Verzeichnis):
für Dateinamen in Dateien:
# Verbinden Sie den Stamm und den Dateinamen, um einen vollständigen Dateipfad zu erstellen
filepath = os.path.join (root, Dateiname)
Dateipfade.anhängen(Dateipfad)
# gibt alle Dateipfade zurück
zurückkehren Dateipfade
Speichern Sie den Pfad zu dem Ordner, der die Dateien enthält, die Sie komprimieren möchten, in einer Variablen namens Verzeichnis. Rufen Sie die Funktion auf, get_all_file_paths() die Sie zuvor erstellt haben, und speichern Sie den Wert, in dem es zurückgegeben wird Dateipfade.
Zeigen Sie dem Benutzer eine Nachricht an, um ihn darüber zu informieren, dass dies die Dateien sind, die das Programm komprimieren wird. Durchlaufen Sie die Dateien und zeigen Sie ihre Namen an.
Übergeben Sie den Namen, den Ihre ZIP-Datei haben soll, zusammen mit der Spezifikation, dass das Programm eine beschreibbare Datei zurückgibt, indem es die with-Anweisung verwendet, um Ausnahmen zu behandeln. Iterieren Sie über jede Datei und verwenden Sie die Funktion write() für die beschreibbare Datei in eine ZIP-Datei.
Wenn der Vorgang abgeschlossen ist, geben Sie eine Meldung aus, die erklärt, dass das Programm alle Dateien erfolgreich gezippt hat.
# Pfad zum Ordner, den Sie komprimieren möchten
Verzeichnis = './pythonzip'# Funktion aufrufen, um alle Dateipfade im Verzeichnis abzurufen
file_paths = get_all_file_paths (Verzeichnis)# Drucken der Liste aller Dateien, die Sie komprimieren möchten
drucken('Liste der Dateien, die gezippt werden:')für file_name in file_paths:
drucken(Dateinamen)# Dateien in eine ZIP-Datei schreiben
mit Zip-Datei('meine_datei.zip', 'w') als Reißverschluss:
# Jede Datei einzeln schreiben
für Datei in Dateipfaden:
Reißverschluss.schreiben(Datei)
drucken('Alle Dateien sind gezippt!')
So entpacken Sie Dateien mit Python
Die Implementierung des Entpackens von Dateien mit dem Zipfile-Modul ist viel einfacher. Importieren Sie die zip-Datei Paket aus dem Zip-Datei Modul und speichern Sie den Namen der ZIP-Datei, die Sie extrahieren möchten, in einer Variablen. Verwenden Sie die with-Anweisung, um Ausnahmen zu behandeln, und öffnen Sie die Datei, die Sie extrahieren möchten, im Lesemodus. Verwenden Sie die Druckverzeichnis () Funktion zum Anzeigen des Inhaltsverzeichnisses der in der ZIP-Datei vorhandenen Dateien.
Zeigen Sie eine Fortschrittsmeldung an, dass Sie die Dateien extrahieren und verwenden alles extrahieren() Funktion, um den Inhalt der ZIP-Datei in das aktuelle Arbeitsverzeichnis zu extrahieren. Alternativ können Sie einen Pfadparameter einfügen, um den Pfad zu ändern, in dem das Programm die Dateien extrahiert.
Zeigen Sie eine Nachricht mit an drucken Aussage über den Abschluss der Operation.
# Importieren der erforderlichen Module
aus zip-Datei importieren Zip-Datei# Übergeben Sie den Namen der ZIP-Datei, die Sie extrahieren möchten
Dateiname = "extract.zip"# Öffnen der ZIP-Datei im Lesemodus
mit ZipDatei (Dateiname, 'R') als Reißverschluss:
# Den Inhalt der ZIP-Datei anzeigen
Reißverschluss.Druckverzeichnis()
# Alle Dateien extrahieren
drucken('Extraktion läuft...')
Reißverschluss.alles extrahieren()
drucken('Alle Dateien werden extrahiert!')
Mehr über Zip-Dateien
Zip-Dateien erfreuen sich großer Beliebtheit und werden seit Jahrzehnten verwendet. Auf beliebten Websites wie GitHub und Google Drive können Sie eine Sammlung von Dateien als ZIP-Archiv herunterladen. Das ZIP-Programm komprimiert eine Reihe von Dateien in ein einzelnes Paket. Dies steht im Gegensatz zu einem Tool wie tar, das Dateien zusammenpackt, aber nicht komprimiert.
Wenn Sie Ihre Dateien mit einem effizienteren Algorithmus verschlüsseln möchten, sind RAR-Dateien der richtige Weg. RAR verwendet den AES-128-Algorithmus, der besser ist als der Deflate-Algorithmus, der von Zip-Dateien verwendet wird. Entscheiden Sie sich letztendlich für diejenige, die Ihren Anforderungen am besten entspricht.