7.16 gzip -- Supporto per i file gzip

La compressione dei dati fornita dal modulo zlib è compatibile con quella usata dal programma GNU di compressione gzip. Di conseguenza, il modulo gzip fornisce la classe GzipFile per leggere e scrivere file in formato gzip, comprimendo e decomprimendo automaticamente i dati in modo tale che sembrino oggetti file ordinari. Notare che altri formati di file che possono essere decompressi dai programmi gzip e gunzip, come quelli prodotti da compress e pack, non sono supportati da questo modulo.

Il modulo definisce i seguenti elementi:

class GzipFile( [filename[, mode[, compresslevel[, fileobj]]]])
Costruttore per la classe GzipFile, che simula gran parte dei metodi di un oggetto file, con l'eccezione dei metodi readinto() e truncate(). Almeno uno fra fileobj e filename deve avere un valore significativo.

La nuova istanza di classe è basata su fileobj che deve essere un file regolare, un oggetto StringIO, od ogni altro oggetto che simuli un file. Il valore predefinito è None, in tale caso, filename viene aperto per fornire un oggetto file.

Quando fileobj è diverso da None, l'argomento filename viene usato unicamente per essere incluso nell'intestazione del file gzip, che può includere il nome del file originario del file non compresso. Se discernibile, il valore predefinito è il nome del file di fileobj, altrimenti, è una stringa vuota, ed in questo caso il nome del file originario non viene incluso nell'intestazione.

L'argomento mode può essere uno fra 'r', 'rb', 'a', 'ab', 'w' o 'wb', a seconda se il file debba essere letto o scritto. Se visibile, il valore predefinito è il modo di fileobj; altrimenti, il valore predefinito è 'rb'. Se non viene passata, l'opzione 'b' verrà aggiunta al modo per assicurare che il file sia aperto in modalità binaria per portabilità multipiattaforma.

L'argomento compresslevel è un intero compreso fra 1 e 9 che indica il livello di compressione; 1 è il più rapido e produce la compressione minore, 9 è il più lento e produce la compressione maggiore. Il valore predefinito è 9.

Chiamare il metodo close() di un oggetto GzipFile non provoca la chiusura i fileobj, visto che si potrebbe voler aggiungere altro materiale dopo i dati compressi. Questo permette anche di passare un oggetto StringIO aperto per essere scritto come fileobj, e recuperare il buffer di memoria risultante usando il metodo getvalue() dell'oggetto StringIO.

open( filename[, mode[, compresslevel]])
Questa è una scorciatoia per GzipFile(filename, mode, compresslevel). È richiesto l'argomento filename; mode ha come valore predefinito 'rb' mentre compresslevel ha come valore predefinito 9.

Vedete anche:

Modulo zlib:
Il modulo basilare di compressione dei dati necessario per supportare il formato dei file gzip.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.