Suche…


Syntax

  • zip-Datei importieren
  • Klasse Zip-Datei. ZipFile ( Datei, Modus = 'r', Komprimierung = ZIP_STORED, allowZip64 = True )

Bemerkungen

Wenn Sie versuchen, eine Datei zu öffnen, die keine ZIP-Datei ist, wird die Ausnahme zipfile.BadZipFile .

In Python 2.7 wurde dies als zipfile.BadZipfile , und dieser alte Name wird neben dem neuen Namen in Python 3.2+ beibehalten

Zip-Dateien öffnen

Importieren Sie zunächst das zipfile Modul und legen Sie den Dateinamen fest.

import zipfile
filename = 'zipfile.zip'

Das Arbeiten mit ZIP-Archiven ist dem Arbeiten mit Dateien sehr ähnlich. Sie erstellen das Objekt, indem Sie die ZIP-Datei öffnen. So können Sie daran arbeiten, bevor Sie die Datei wieder schließen.

zip = zipfile.ZipFile(filename)
print(zip)
# <zipfile.ZipFile object at 0x0000000002E51A90>
zip.close()

In Python 2.7 und Python in 3 Versionen höher als 3.2 können wir die Verwendung with Kontext - Manager. Wir öffnen die Datei im "read" -Modus und drucken dann eine Liste mit Dateinamen:

with zipfile.ZipFile(filename, 'r') as z:
    print(zip)
    # <zipfile.ZipFile object at 0x0000000002E51A90>

Inhalt der Zipdatei überprüfen

Es gibt mehrere Möglichkeiten, den Inhalt einer ZIP-Datei zu überprüfen. Sie können das printdir , um eine Vielzahl von Informationen an stdout senden

with zipfile.ZipFile(filename) as zip:
    zip.printdir()

    # Out:
    # File Name                                             Modified             Size
    # pyexpat.pyd                                    2016-06-25 22:13:34       157336
    # python.exe                                     2016-06-25 22:13:34        39576
    # python3.dll                                    2016-06-25 22:13:34        51864
    # python35.dll                                   2016-06-25 22:13:34      3127960
    # etc.

Wir können auch eine Liste von Dateinamen mit der namelist Methode erhalten. Hier drucken wir einfach die Liste aus:

with zipfile.ZipFile(filename) as zip:
    print(zip.namelist())

# Out: ['pyexpat.pyd', 'python.exe', 'python3.dll', 'python35.dll', ... etc. ...]

Anstelle der namelist können wir die infolist Methode infolist , die eine Liste von ZipInfo Objekten ZipInfo , die zusätzliche Informationen zu jeder Datei enthalten, z. B. Zeitstempel und Dateigröße:

with zipfile.ZipFile(filename) as zip:
    info = zip.infolist()
    print(zip[0].filename)
    print(zip[0].date_time)
    print(info[0].file_size)

# Out: pyexpat.pyd
# Out: (2016, 6, 25, 22, 13, 34)
# Out: 157336

Extrahieren der ZIP-Datei in ein Verzeichnis

Extrahieren Sie den gesamten Dateiinhalt einer ZIP-Datei

import zipfile
with zipfile.ZipFile('zipfile.zip','r') as zfile:
    zfile.extractall('path')

Wenn Sie zum Extrahieren einzelner Dateien die Extraktionsmethode verwenden möchten, werden Namen und Pfad als Eingabeparameter verwendet

import zipfile
f=open('zipfile.zip','rb')
zfile=zipfile.ZipFile(f)
for cont in zfile.namelist():
    zfile.extract(cont,path)

Neue Archive erstellen

Um ein neues Archiv zu erstellen, öffnen Sie die ZIP-Datei mit dem Schreibmodus.

import zipfile
new_arch=zipfile.ZipFile("filename.zip",mode="w")

Um diesem Archiv Dateien hinzuzufügen, verwenden Sie die write () - Methode.

new_arch.write('filename.txt','filename_in_archive.txt') #first parameter is filename and second parameter is filename in archive by default filename will taken if not provided
new_arch.close()

Wenn Sie eine Bytefolge in das Archiv schreiben möchten, können Sie die Methode writestr () verwenden.

str_bytes="string buffer"
new_arch.writestr('filename_string_in_archive.txt',str_bytes)
new_arch.close()


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow