Video Corso Base di Python 3

25: Come Usare Archivi Zip in Python

Ciao a tutti bella gente e benvenuti a questa nuova lezione, parleremo di File Zip, quindi Archivi Compressi in formato Zip.

Come vedrete a breve, prestando un poco di attenzione il procedimento per l'utilizzo di questo formato nei nostri programmi risulta piuttosto semplice.

Utilizzeremo due moduli della Standard Library, il modulo os per navigare nel sistema, e il modulo zipfile che si occuperá di comprimere e decomprimere.

import os, zipfile

Iniziamo partendo dalla creazione di un archivio, ovvero vediamo come si crea un archivio zip nei nostri programmi in Python. In maniera simile a quanto visto nella lezione sui file di testo facciamo:

# creazione/apertura in modalità scrittura
archivio = zipfile.ZipFile('mio_archivio.zip', "w") 

# aggiunta file e compressione
archivio.write("/file/da/comprimere/urls.py", compress_type=zipfile.ZIP_DEFLATED) 

# chiusura
archivio.close()

Tentare di aggiungere del contenuto ad un archivio già esistente, utilizzando il parametro "w" ne cancellerebbe tutto il contenuto. Per aggiungere file in maniera sicura si utilizzata il parametro "a", da append:

# apertura in modalità aggiunta
archivio = zipfile.ZipFile('mio_archivio.zip',"a") 

archivio.write("manage.py", compress_type=zipfile.ZIP_DEFLATED)

archivio.close()

Ricordate: l'archivio va sempre chiuso!

Passiamo ora all'estrazione del contenuto di un archivio zip, facciamo ció grazie a extractall();

# apertura dell'archivio per estrazione
archivio = zipfile.ZipFile('mio_archivio.zip') 

# estrazione di tutti i file
archivio.extractall("/percorso/dove/estrarre/volendo/nuova/cartella") 

# chiusura
archivio.close()

Potete anche estrarre un singolo file usando extract() invece di extractall():

# apertura dell'archivio per estrazione
archivio = zipfile.ZipFile('mio_archivio.zip') 

archivio.extract("file","/percorso/dove/estrarre/volendo/nuova/cartella")

archivio.close()

Infine possiamo leggere delle preziose informazioni riguardo al contenuto di un file zip, qualora ci serva visionarlo dall'interno dei nostri programmi per poter effettuare delle azioni specifiche con ciascun file presente:

# apertura dell'archivio per lettura
# archivio = zipfile.ZipFile('mio_archivio.zip') 

# effettua una lista del contenuto del'archivio
archivio.namelist() 
["manage.py","urls.py"]

urlsinfo = archivio.getinfo("urls.py")
urlsinfo.filesize
urlsinfo.compress_size

# chiusura
archivio.close()

Menu della Serie