Python Unzip File: How To Extract Single or Multiple Files
On September 24, 2021 by adminPython ZipFile ist eine Klasse von zipfile Modul zum Lesen und Schreiben von zip-Dateien. ZIP ist ein Archivdateiformat, das eine verlustfreie Datenkompression unterstützt.
Mit verlustfreier Kompression ist gemeint, dass der Kompressionsalgorithmus eine vollständige Rekonstruktion der Originaldaten aus den komprimierten Daten ermöglicht.
Eine ZIP-Datei ist eine einzelne Datei, die eine oder mehrere komprimierte Dateien enthält und eine einfache Möglichkeit bietet, große Dateien zu verkleinern und zusammengehörige Dateien zusammenzuhalten.
Python unzip file
Um Zip-Dateien mit Python zu bearbeiten, werden wir ein eingebautes Python-Modul namens zipfile verwenden. Im Python-Modul zipfile stellt die Klasse ZipFile eine Funktion zur Verfügung, um den gesamten Inhalt des ZIP-Archivs zu extrahieren.
Um eine Datei in Python zu entpacken, verwenden Sie die Methode ZipFile.extractall(). Die extractall()-Methode nimmt einen Pfad, members, pwd als Argument und extrahiert den gesamten Inhalt.
Syntax
ZipFile.extractall(path=None, members=None, pwd=None)
Sie akzeptiert die folgenden Parameter:
- Pfad: Ort, an dem die ZIP-Datei extrahiert werden muss; wenn nicht angegeben, wird der Inhalt im aktuellen Verzeichnis extrahiert.
- members: Liste der zu extrahierenden Dateien. Wenn dieses Argument nicht angegeben wird, werden alle Dateien in der ZIP-Datei entpackt.
- pwd: Wenn die Zip-Datei verschlüsselt ist, muss das Passwort in diesem Argument übergeben werden.
Beispiel für Python unzip
Angenommen, ich habe in meinem aktuellen Arbeitsverzeichnis eine Zip-Datei mit dem Namen Mail3.zip und möchte sie mit der ZipFile.extractall()-Methode entpacken.
Sehen Sie sich den folgenden Code an.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in current directory zipObj.extractall()
Output
python3 app.py
Es werden die Dateien im gleichen Verzeichnis wie Ihre programmierte app.py-Datei entpackt.
Es werden alle Dateien in der Zip-Datei im aktuellen Verzeichnis entpackt. Wenn am Entpackungsort bereits Dateien mit demselben Namen vorhanden sind, werden diese Dateien überschrieben.
Wir haben die Anweisung Python with verwendet, um die Dateien zu öffnen. „Python with“ stellt sicher, dass offene Dateideskriptoren automatisch geschlossen werden, nachdem die Programmausführung den Kontext der with-Anweisung verlassen hat.
Alle Dateien aus einer Zip-Datei in ein anderes Verzeichnis extrahieren
Wir können alle Dateien aus der Zip-Datei in ein anderes Verzeichnis extrahieren, und dazu müssen wir den Zielort als Argument in extractall() übergeben. Der Pfad kann relativ oder absolut sein.
Sehen Sie sich den folgenden Code an.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObj: # Extract all the contents of zip file in different directory zipObj.extractall('temp') print('File is unzipped in temp folder')
Hier wird ein ZipFile-Objekt durch den Aufruf eines ZipFile-Konstruktors erstellt, der den Zip-Dateinamen und Modusparameter akzeptiert. Wir erstellen das ZipFile-Objekt im READ-Modus und benennen es als zipObj.
In der Ausgabe. Wenn der temporäre Ordner nicht vorhanden ist, wird dieser Ordner im aktuellen Verzeichnis erstellt und der gesamte Inhalt der Datei Mail3.zip entpackt.
Ausgabe
python3 app.pyFile is unzipped in temp folder
Dateien aus einer großen Zip-Datei anhand der Bedingung extrahieren
Angenommen, wir haben eine große Zip-Datei und benötigen einige wenige Dateien aus Tausenden von Dateien im Archiv. Das Entpacken aller Dateien aus einer großen ZIP-Datei kann Minuten dauern. Aber wenn man nur an ein paar der archivierten Dateien interessiert ist, dann können wir, anstatt die ganze Datei zu entpacken, auch die einzelne Datei aus der ZIP-Datei extrahieren.
Die Python ZipFile-Klasse bietet eine Funktion, um eine einzelne Datei aus einer ZIP-Datei zu extrahieren.
ZipFile.extract(member, path=None, pwd=None)
Siehe den folgenden Code.
# app.pyfrom zipfile import ZipFilewith ZipFile('Mail3.zip', 'r') as zipObject: listOfFileNames = zipObject.namelist() for fileName in listOfFileNames: if fileName.endswith('.py'): # Extract a single file from zip zipObject.extract(fileName, 'temp_py') print('All the python files are extracted')
Wenn die Dateinamen die Erweiterung .py haben, dann wird sie in den Ordner temp_py extrahiert. Andernfalls werden die Dateien nicht extrahiert.
Fazit
Das Entpacken von Dateien in Python ist sehr einfach, da Python das zipfile-Modul zur Verfügung stellt.
Das zipfile-Modul verfügt über alle Funktionen zum Entpacken von einzelnen oder mehreren Dateien, je nach den Bedingungen.
Schließlich ist das Tutorial Python Unzip: Wie man einzelne oder mehrere Dateien extrahiert beendet.
Siehe auch
Python zip()
Python zip list of lists
Python zip dictionary
Unzip Python tuples
Python list to dataframe
Python list to dictionary
Schreibe einen Kommentar