Usa python per comprimere un file e una directory

Un file compresso contiene molti file, directory e sottodirectory. Molte applicazioni sono disponibili per creare un file compresso di qualsiasi file o directory di grandi dimensioni e recuperare file o cartelle estraendo un file compresso. Quando vogliamo trasferire qualsiasi file o cartella di grandi dimensioni su Internet, allora è meglio comprimere il contenuto prima del trasferimento. Questo rende il compito più veloce. Puoi usare gli script python per comprimere ed estrarre qualsiasi file o cartella di grandi dimensioni. il modulo zipfile di python è usato per fare il compito. Come puoi usare python3 per comprimere qualsiasi file o directory è mostrato in questo tutorial usando vari esempi.

Crea un nuovo file chiamato ‘zipcode1.py’ e aggiungi il seguente codice. il modulo zipfile è importato per comprimere il file. temp.zip è assegnato come nome del file zip con modalità di scrittura e successivamente, il nome del file originale, temp.txt e il tipo di compressione sono dati come parametri nel metodo di scrittura.

import zipfile
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()

Lancia lo script

$ python3 zipcode1.py

La dimensione di temp.txt è di 27 byte e dopo la compressione, la dimensione di temp.zip è di 2 byte.

Esempio-2: Comprimere una particolare directory

Creare un nuovo file chiamato ‘zipcode2.py’ e aggiungere il seguente codice. Una directory può contenere molti file, cartelle e sottocartelle. Per leggere il contenuto della directory, il modulo os di python viene importato con il modulo zipfile per comprimere la directory. In questo script, la directory mydir è usata per la compressione.

# importa i moduli necessari
import os
import zipfile
# Dichiara la funzione per restituire tutti i percorsi dei file di una particolare directory
def retrieve_file_paths(dirName):
# imposta la variabile percorsi dei file
filePaths =
# Leggi tutte le directory, sottodirectory e liste di file
per root, directory, file in os.walk(dirName):
for filename in files:
# Crea il percorso completo dei file usando il modulo os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# restituisce tutti i percorsi
return filePaths
# Dichiara la funzione principale
def main():
# Assegna il nome della directory da zippare
dir_name = ‘mydir’
# Chiama la funzione per recuperare tutti i file e le cartelle della directory assegnata
filePaths = retrieve_file_paths(dir_name)
# stampa la lista di tutti i file da zippare
print(‘Il seguente elenco di file sarà zippato:’)
for fileName in filePaths:
print(fileName)
# scrivere i file in un file zip
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
con zip_file:
# scrivere ogni file uno per uno
for file in filePaths:
zip_file.write(file)
print(dir_name+’.zip file è stato creato con successo!’)
# Chiama la funzione principale
if __name__ == “__main__”:
main()

Esegui lo script

$ python3 zipcode2.py

La dimensione di mydir è di 21 byte e dopo la compressione, la dimensione di mydir.zip è di 2 byte.

Esempio-3: Comprimere una directory data da un argomento della linea di comando

Creare un nuovo file chiamato ‘zipcode3.py’ e aggiungere il seguente codice. Per leggere il valore della linea di comando, un altro modulo python sys è importato con i moduli os e zipfile.

# importa i moduli necessari
import os
import sys
import zipfile
# Dichiara la funzione per restituire tutti i percorsi dei file di una particolare directory
def retrieve_file_paths(dirName):
# imposta la variabile percorsi file
filePaths =
# Leggi tutte le directory, sottodirectory e liste di file
per root, directory, file in os.walk(dirName):
for filename in files:
# Crea il percorso completo dei file usando il modulo os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# restituisce tutti i percorsi
return filePaths
# Dichiara la funzione principale
def main():
# Controlla che siano dati due argomenti al momento di eseguire lo script
if len (sys.argv) != 2 :
print (“Hai inserito il nome della directory da zippare”)
sys.exit (1)
# Imposta il nome della directory dall’argomento del comando
dir_name = sys.argv
# Imposta il nome del file zip
zipFileName = dir_name + “.zip”
# Chiama la funzione per recuperare tutti i file e le cartelle della directory assegnata
filePaths = retrieve_file_paths(dir_name)
# stampa l’elenco dei file da zippare
print(‘Il seguente elenco di file sarà zippato:’)
for fileName in filePaths:
print(fileName)
# scrive file e cartelle in un file zip
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
con zip_file:
# scrivere ogni file separatamente
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ file è stato creato con successo!’)
# Chiama la funzione principale
if __name__ == “__main__”:
main()

Esegui lo script

$ python3 zipcode3.py

test è dato come nome della directory nell’argomento della linea di comando. La dimensione di test è di 21 byte e dopo la compressione, la dimensione di test.zip è di 2 byte.

Spero che questo tutorial ti aiuti ad usare python per comprimere qualsiasi file o directory.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.