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¶
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.