gzip — komprese a dekomprese gzip

Tento modul umožňuje kompresi a dekompresi binárních dat pomocí algoritmu DEFLATE používaného formátem souborů gzip. Poskytuje jednorázové pomocné funkce compress()/decompress() a streamovací obal GzipFile kolem podkladového souboru nebo objektu streamu.

Poznámka

Preferujte použití deflate.DeflateIO namísto funkcí v tomto modulu, protože poskytuje streamovací rozhraní pro kompresi a dekompresi, které je pohodlnější a paměťově efektivnější při čtení nebo zápisu komprimovaných dat do souboru, soketu nebo streamu.

Dostupnost:

  • Tento modul není ve výchozím nastavení součástí OpenMV Cam, protože duplikuje funkcionalitu již poskytovanou modulem deflate.

  • Kopii lze nainstalovat (nebo zamrznout do vlastního firmwaru) z micropython-lib (zdroj). Více informací viz Správa balíčků. Tato dokumentace popisuje uvedený modul.

  • Komprese je k dispozici pouze tehdy, je-li komprese dostupná ve vestavěném modulu deflate – tedy ne na OpenMV Cam založených na STM32 (viz poznámka o dostupnosti výše).

Funkce

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

Obal kolem vestavěné funkce open() vracející instanci GzipFile.

gzip.decompress(data: bytes, /) bytes

Dekomprimuje data do objektu bytes.

gzip.compress(data: bytes, /) bytes

Komprimuje data do objektu bytes.

Třídy

class gzip.GzipFile(*, fileobj, mode: str)

Tuto třídu lze použít k obalení fileobj, což je libovolný objekt podobný streamu, jako je soubor, soket nebo stream (včetně io.BytesIO). Sama je streamem a implementuje standardní metody read/readinto/write/close.

Když je argument mode nastaven na "rb", čtení z instance GzipFile dekomprimuje data v podkladovém streamu a vrátí dekomprimovaná data.

Je-li povolena podpora komprese, lze argument mode nastavit na "wb" a zápisy do instance GzipFile budou komprimovány a zapsány do podkladového streamu.

Ve výchozím nastavení třída GzipFile čte a zapisuje data pomocí formátu souborů gzip, včetně hlavičky a patičky s kontrolním součtem a velikostí okna 512 bajtů.

Argumenty file, compresslevel a mtime nejsou podporovány. fileobj a mode musí být vždy uvedeny jako klíčové argumenty.

Příklady

Typickým případem použití gzip.GzipFile je čtení nebo zápis komprimovaného souboru z úložiště:

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)

Pokyny pro práci se zdroji gzip a volbu velikosti okna najdete v poznámce na konci dokumentace deflate.