Come comprimere e decomprimere i dati in Python

Oggi vedremo un tutorial che tratterà il compressione e decompressione dei dati in Python, un compito molto semplice, poiché abbiamo alcuni moduli che ci permetteranno di svolgere questo lavoro di compressione dei dati. Le librerie sono: zlib, gzip, bz2, file ziptarfile.

Durante il tutorial vedremo esempi di alcune delle librerie per imparare ad usarlo, è il modo migliore per capire come funziona.

NotaUtilizzerà la versione 3 di Python.

Cominciamo con gli esempi. Tutti saranno semplici e facili da capire.

1. Modulo Zlib


Vedremo un paio di esempi con questa libreria, entrambi saranno facili come abbiamo detto prima.

Esempio 1
Abbiamo il seguente codice, come puoi vedere è breve:

 import zlib as zl line = b "Questo è solo un test per il tutorial da pubblicare in Solvetic" line_compress = zl.compress (line) print ("Uncompressed size% d"% len (line)) print (" Compressed size% d "% len (line_compress))
Comprimiamo la riga originale e mostriamo cosa occupano l'uno e l'altro, ottenendo il seguente output:

Ora vedremo come decomprimere nel seguente esempio.

Esempio 2
Nel codice seguente comprimeremo una riga, la mostreremo compressa e la decomprimeremo per mostrarla.

 import zlib as zl line = b "Test Python zlib" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))
Usiamo l'ultima riga del codice per passare dai byte alla stringa (usando utf-8 nella decodifica), poiché la penultima riga mostrerà una b all'inizio. L'output del programma è il seguente:

Andiamo ora a vedere un'altra libreria come gzip.

2. Modulo Gzip


Gli esempi visti sopra sono validi per questa libreria, vediamo l'esempio 1 uguale al precedente, cambiando solo la libreria.

Esempio 1
Il codice che abbiamo è il seguente, lo stesso del precedente, cambiando zlib in gzip:

 import gzip line = b "Questo è solo un test per il tutorial da pubblicare in Solvetic" line_compress = gzip.compress (line) print ("Dimensione non compressa% d"% len (linea)) print ("Dimensione compressa % d " % len (line_compress))
Se eseguiamo, abbiamo il seguente output:

La compressione pesa più di quella non compressa. Se cambiamo il testo per uno più grande ed eseguiamo:

Ora, se hai migliorato la dimensione, ma ancora meglio comprimere zlib, viene inserita una cattura, la prima esecuzione utilizza zlib e la seconda gzip.

Andiamo per il seguente esempio, che sarà l'ultimo.

Esempio 2
Ora scriveremo e leggeremo da un file, il codice è il seguente:

 import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Test gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
Potete vedere che non ci occupiamo delle possibili eccezioni che possono sorgere, questo è stato omesso per rendere l'esempio più breve e diretto. Se eseguiamo il codice, abbiamo il seguente output:

Abbiamo visto alcuni esempi di utilizzo delle librerie zlib e gzip, puoi consultare la documentazione ufficiale di Python per approfondire e vedere meglio questi moduli e quelli sopra citati. E nel caso foste interessati, vi lasciamo il link ad un altro tutorial su Python: Serialize and deserialize.

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave