I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Per saperne di più.

Zippare è un modo elegante per comprimere diversi file e combinarli in uno solo. Ciò consente di risparmiare non solo lo spazio di archiviazione, ma anche la larghezza di banda durante il trasferimento di un file su una rete. Una delle migliori caratteristiche di zip è che funziona su tutte le principali piattaforme: Windows, Linux e Mac.

Zip utilizza la compressione senza perdita in modo da conservare tutti i dati durante la compressione e la decompressione. Puoi anche crittografare e decrittografare i tuoi file zip.

Con così tante funzionalità da esplorare, scopri come leggere, comprimere e decomprimere i file utilizzando il modulo zipfile di Python.

Cos'è il modulo zipfile?

Puoi usare il modulo zipfile standard per manipolare i file zip usando Python. Con questo modulo puoi aprire e leggere file zip, leggere i loro metadati, creare un file zip, comprimerlo e decomprimere i file. Sono disponibili tre metodi di compressione: Deflate, Bzip2 e LZMA.

instagram viewer

Una delle cose che manca al modulo è la capacità di gestire file multi-disco, ma gestisce l'estensione ZIP64. Può anche decrittografare gli archivi zip ma non crittografarli. Utilizzando il modulo zipfile è possibile ottenere i metadati del file zip come la data e l'ora della modifica. Puoi anche recuperare dettagli come il sistema operativo utilizzato per creare il file, la versione di zip e la dimensione del file sia in formato compresso che non compresso.

Come comprimere i file usando Python

Puoi comprimere più file in un archivio usando il modulo zipfile di Python. Importa il File zip modulo dal file zip package per eseguire le operazioni zip richieste. Anche importare IL os modulo per selezionare e salvare i file.

Definire una funzione get_all_file_paths(). Dovrebbe accettare un parametro di directory che contiene il percorso della cartella contenente i file da comprimere.

Inizializza un elenco vuoto che memorizzerà l'elenco dei percorsi dei file. Usa un ciclo for per ottenere il contenuto completo della directory di destinazione usando il os.walk() funzione. Questa funzione recupera i nomi dei file in un albero di directory spostandosi lungo di esso con un approccio dall'alto verso il basso o dal basso verso l'alto. Per ogni directory, la funzione restituisce una tripla contenente root, dirs e file.

La radice è una stringa che contiene il percorso completo della directory. L'elenco dirs include tutte le sottodirectory contenute nella directory. L'elenco dei file contiene tutti i file presenti nella directory.

All'interno del ciclo, dichiarane un altro loop per scorrere l'elenco dei file. Usa il os.percorso.join() funzione per combinare il nome della directory con ogni nome file per creare un percorso completo. Quindi, aggiungi questo nome file completo all'elenco che hai creato in precedenza. Al termine di questa operazione, restituire l'elenco dei percorsi dei file.

# importa i moduli richiesti
da file zip importare File zip
importare os

# crea una funzione per ottenere tutti i percorsi dei file
defget_all_file_paths(elenco):
# inizializzazione di un elenco vuoto per memorizzare i percorsi dei file
file_percorsi = []

# naviga tra i file
perradice, directory, FileInos.camminare(directory):
per nome file nei file:
# unisce la radice e il nome file per creare un percorso file completo
filepath = os.path.join (radice, nome file)
file_percorsi.aggiungere(percorso del file)

# restituisce tutti i percorsi dei file
ritorno file_percorsi

Memorizza il percorso della cartella che contiene i file che vuoi comprimere in una variabile chiamata directory. Chiama la funzione, get_all_file_paths() che hai creato in precedenza e memorizza il valore in cui restituisce file_percorsi.

Mostra un messaggio all'utente per informarlo che questi sono i file che il programma comprimerà. Scorri i file e visualizza i loro nomi.

Passare il nome che si desidera assegnare al file zip insieme alla specifica che il programma restituisce un file scrivibile utilizzando l'istruzione with per gestire le eccezioni. Iterare su ogni file e utilizzare la funzione write() sul file scrivibile in un file zip.

Quando l'operazione è completa, emette un messaggio che spiega che il programma ha zippato tutti i file con successo.

# percorso della cartella che desideri comprimere
rubrica = './pythonzip'

# funzione di chiamata per ottenere tutti i percorsi dei file nella directory
file_paths = get_all_file_paths (directory)

# stampa l'elenco di tutti i file che vuoi zippare
stampa('Elenco dei file che verranno compressi:')

per nome_file in percorsi_file:
stampa(nome del file)

# scrittura di file in un file zip
con File zip('mio_file.zip', 'w') COME cerniera lampo:
# scrive ogni file uno per uno
per il file in file_paths:
cerniera lampo.scrivere(file)

stampa('Tutti i file sono compressi!')

Come decomprimere i file usando Python

L'implementazione della decompressione dei file utilizzando il modulo zipfile è molto più semplice. Importa il file zip pacchetto dal File zip module e memorizza il nome del file zip che vuoi estrarre in una variabile. Utilizzare l'istruzione with per gestire le eccezioni e aprire il file che si desidera estrarre in modalità di lettura. Usa il printdir() funzione per visualizzare l'indice dei file presenti nello zip.

Visualizza un messaggio di avanzamento che indica che stai estraendo i file e utilizza il file estrai tutto() funzione per estrarre il contenuto del file zip nella directory di lavoro corrente. In alternativa, puoi includere un parametro path per modificare il percorso in cui il programma estrae i file.

Visualizza un messaggio utilizzando il stampa dichiarazione di completamento dell'operazione.

# importazione dei moduli richiesti
da file zip importare File zip

# passa il nome del file zip che vuoi estrarre
nome_file = "estrai.zip"

# aprendo il file zip in modalità lettura
con ZipFile (nome_file, 'R') COME cerniera lampo:
# visualizza il contenuto del file zip
cerniera lampo.printdir()

# estrazione di tutti i file
stampa('Estrazione in corso...')
cerniera lampo.estrai tutto()
stampa('Tutti i file vengono estratti!')

Ulteriori informazioni sui file zip

I file zip hanno guadagnato molta popolarità e sono in uso ormai da decenni. Siti Web popolari come GitHub e Google Drive ti consentono di scaricare una raccolta di file come archivio zip. Il programma zip comprime un insieme di file in un unico pacchetto. Ciò è in contrasto con uno strumento come tar che impacchetta i file ma non li comprime.

Se vuoi crittografare i tuoi file utilizzando un algoritmo più efficiente, i file RAR sono la strada da percorrere. RAR utilizza l'algoritmo AES-128 che è migliore dell'algoritmo deflate utilizzato dai file zip. In definitiva, scegli quello che meglio soddisfa le tue esigenze.