Pitone

Modulo gzip Python

Modulo gzip Python

In questa lezione studieremo come possiamo usare Python gzip modulo per leggere e scrivere nei file compressi in Python. La piùgrande caratteristica che questo modulo ci fornisceèche possiamo trattare i file compressi come normali oggetti File che ci salvano dalla complessità della gestione dei file e del loro ciclo di vita nel nostro codice e ci permette di concentrarci sulla logica di core business del programma.Il gzip fornisce quasi le stesse funzionalità dei programmi GNU come gunzip e gzip.

Scrittura di file compressi con open()

Inizieremo con un esempio di base in cui possiamo creare un file gzip e scriverci alcuni dati. Per questo, dobbiamo creare un file e aprirlo con la modalità di scrittura in modo che i dati possano essere inseriti in esso. Diamo un'occhiata a un programma di esempio con il quale possiamo scrivere dati in un file gzip:

importa gzip
import io
importare il sistema operativo
output_file = 'linxhint_demo.TXT.gz'
write_mode = 'wb'
con gzip.open(output_file, write_mode) come output:
con io.TextIOWrapper(output, encoding='utf-8') come codifica:
codificare.write('Possiamo scrivere tutto ciò che vogliamo nel file.\n')
print(file_output,
'contiene', os.stat(file_output).st_size, 'byte')
os.system('file -b --mime '.formato (file_output))

Ecco cosa otteniamo indietro con questo comando:

Scrivere su file zip

Se ora dai un'occhiata alla struttura delle cartelle in cui hai eseguito questo script, dovrebbe esserci un nuovo file chiamato con quello che abbiamo fornito nel nostro programma sopra.

Scrivere più righe in un file compresso

Possiamo anche scrivere più righe o in realtà un numero qualsiasi di righe nel nostro file gzip in modo molto simile all'esempio precedente. Per rendere questo esempio diverso, utilizzeremo anche il modulo itertools. Diamo un'occhiata al programma di esempio:

importa gzip
import io
importare il sistema operativo
importare itertools
output_file = 'linxhint_demo.TXT.gz'
write_mode = 'wb'
con gzip.open(output_file, write_mode) come output:
con io.TextIOWrapper(output, encoding='utf-8') come enc:
enc.righe di scrittura(
itertools.repeat('LinuxHint, ripetendo la stessa riga!.\n', 10)
)
os.system('gzcat linxhint_demo.TXT.gz')

Vediamo l'output di questo comando:

Scrivere più righe

Lettura di dati compressi

Possiamo anche leggere il file compresso che abbiamo creato nell'ultimo esempio utilizzando il modulo gzip con una semplicissima chiamata a Aperto funzione:

importa gzip
import io
importare il sistema operativo
nome_file = 'linxhint_demo.TXT.gz'
file_mode = 'rb'
con gzip.open(nome_file, modalità_file) come file_input:
con io.TextIOWrapper(input_file, encoding='utf-8') come dec:
print(dec.leggere())

Ecco cosa otteniamo indietro con questo comando:

Lettura di un file gzip

Lettura di flussi

A causa del fatto che i file di testo possono essere di dimensioni molto grandi, è intelligente aprire questi file in un flusso piuttosto che caricare il file completo in un singolo oggetto che occupa molta memoria del sistema e in alcuni casi può persino causare il processo crollare completamente. Diamo un'occhiata a un programma di esempio che legge il file compresso dato in un flusso:

importa gzip
da io import BytesIO
import binascii
mode_write = 'wb'
mode_read = 'rb'
non_compresso = b'Riga ripetuta x volte.\n' * 8
print('Dati non compressi:', len(non_compresso))
print(non_compresso)
buf = BytesIO()
con gzip.GzipFile(mode=mode_write, fileobj=buf) come file:
file.write(non_compresso)
compresso = buf.ottieni valore()
print('Dati compressi:', len(compresso))
print(binascii.hexlify (compresso))
in_buffer = BytesIO (compresso)
con gzip.GzipFile(mode=mode_read, fileobj=in_buffer) come file:
read_data = file.read(len(non_compresso))
print('\nRileggo:', len(read_data))
print(read_data)

Vediamo l'output di questo comando:

Lettura di file gzip in uno stream

Sebbene il programma fosse un po' lungo, in realtà abbiamo semplicemente usato i moduli Python per aprire il file e trasmettere il contenuto alla console con un oggetto lettore bufferizzato.

Conclusione

In questa lezione, abbiamo esaminato come possiamo utilizzare il modulo Python gzip per comprimere e decomprimere i file in Python. La più grande caratteristica che questa libreria ci offre è che possiamo trattare i file compressi come normali oggetti File.

Leggi altri post basati su Python qui.

Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...
I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...