Ricerca…


Sintassi

  • zipfile di importazione
  • zipfile di classe . ZipFile ( file, modalità = 'r', compressione = ZIP_STORED, allowZip64 = True )

Osservazioni

Se si tenta di aprire un file che non è un file ZIP, viene sollevata l'eccezione zipfile.BadZipFile .

In Python 2.7, questo era scritto zipfile.BadZipfile , e questo vecchio nome è mantenuto insieme a quello nuovo in Python 3.2+

Aprire i file zip

Per iniziare, importa il modulo zipfile e imposta il nome file.

import zipfile
filename = 'zipfile.zip'

Lavorare con gli archivi zip è molto simile a lavorare con i file , si crea l'oggetto aprendo il file zip, che consente di lavorarci sopra prima di chiudere nuovamente il file.

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

In Python 2.7 e Python in 3 versioni superiori a 3.2, possiamo usare la with contesto manager. Apriamo il file in modalità "lettura", quindi stampiamo un elenco di nomi di file:

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

Esaminando i contenuti di Zipfile

Ci sono alcuni modi per ispezionare il contenuto di un file zip. È possibile utilizzare printdir per ottenere solo una serie di informazioni inviate allo stdout

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.

Possiamo anche ottenere una lista di nomi di file con il namelist metodo. Qui, stampiamo semplicemente la lista:

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

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

Invece namelist , possiamo chiamare il metodo infolist , che restituisce un elenco di oggetti ZipInfo , che contengono informazioni aggiuntive su ciascun file, ad esempio un timestamp e una dimensione del file:

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

Estrazione del contenuto del file zip in una directory

Estrai tutti i contenuti dei file di un file zip

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

Se vuoi estrarre singoli file usa il metodo di estrazione, prende nome elenco e percorso come parametro di input

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

Creare nuovi archivi

Per creare un nuovo archivio aperto zipfile con modalità di scrittura.

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

Per aggiungere file a questo archivio usa il metodo write ().

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()

Se vuoi scrivere una stringa di byte nell'archivio, puoi usare il metodo writstr ().

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow