gzip — compressione e decompressione gzip¶
Questo modulo consente la compressione e la decompressione di dati binari con l”algoritmo DEFLATE usato dal formato di file gzip. Fornisce gli helper one-shot compress()/decompress() e un wrapper di streaming GzipFile attorno a un file o stream sottostante.
Nota
Preferisci usare deflate.DeflateIO invece delle funzioni in questo modulo, poiché fornisce un’interfaccia di streaming per la compressione e la decompressione che è comoda e più efficiente in termini di memoria quando si legge o si scrive dati compressi su un file, un socket o uno stream.
Disponibilità:
Questo modulo non è incluso sulla OpenMV Cam per impostazione predefinita, in quanto duplica funzionalità già fornite dal modulo
deflate.Una copia può essere installata (o inclusa in un firmware personalizzato) da micropython-lib (sorgente). Consulta Gestione dei pacchetti per maggiori informazioni. Questa documentazione descrive quel modulo.
La compressione è disponibile solo se la compressione è disponibile nel modulo integrato
deflate– cioè, non sulle OpenMV Cam basate su STM32 (vedi la nota sulla disponibilità qui sopra).
Funzioni¶
Classi¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Questa classe può essere usata per avvolgere un fileobj, ovvero un qualsiasi oggetto stream-like come un file, un socket o uno stream (incluso
io.BytesIO). È essa stessa uno stream e implementa i metodi standard read/readinto/write/close.Quando l’argomento mode è
"rb", le letture dall’istanza di GzipFile decomprimeranno i dati nello stream sottostante e restituiranno dati decompressi.Se il supporto alla compressione è abilitato, l’argomento mode può essere impostato a
"wb", e le scritture sull’istanza di GzipFile verranno compresse e scritte nello stream sottostante.Per impostazione predefinita la classe GzipFile leggerà e scriverà i dati usando il formato di file gzip, inclusi un header e un footer con checksum e una dimensione della finestra di 512 byte.
Gli argomenti file, compresslevel e mtime non sono supportati. fileobj e mode devono sempre essere specificati come argomenti keyword.
Esempi¶
Un tipico caso d’uso di gzip.GzipFile è leggere o scrivere un file compresso dalla memoria di archiviazione:
import gzip
# Reading:
with open("data.gz", "rb") as f:
with gzip.GzipFile(fileobj=f, mode="rb") as g:
# Use g.read(), g.readinto(), etc.
# Same, but using gzip.open:
with gzip.open("data.gz", "rb") as f:
# Use f.read(), f.readinto(), etc.
# Writing:
with open("data.gz", "wb") as f:
with gzip.GzipFile(fileobj=f, mode="wb") as g:
# Use g.write(...) etc
# Same, but using gzip.open:
with gzip.open("data.gz", "wb") as f:
# Use f.write(...) etc
# Write a dictionary as JSON in gzip format, with a
# small (64 byte) window size.
config = { ... }
with gzip.open("config.gz", "wb") as f:
json.dump(config, f)
Per indicazioni su come lavorare con sorgenti gzip e sulla scelta della dimensione della finestra, consulta la nota alla fine della documentazione di deflate.