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

gzip.open(filename: str, mode: str, /) GzipFile

Wrapper attorno alla funzione integrata open() che restituisce un’istanza di GzipFile.

gzip.decompress(data: bytes, /) bytes

Decomprime data in un oggetto bytes.

gzip.compress(data: bytes, /) bytes

Comprime data in un oggetto bytes.

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.