gzip — gzip-komprimering och dekomprimering¶
Denna modul möjliggör komprimering och dekomprimering av binär data med den DEFLATE-algoritm som används av gzip-filformatet. Den tillhandahåller engångshjälparna compress()/decompress() och en strömmande GzipFile-omslutning kring ett underliggande fil- eller strömobjekt.
Anteckning
Föredra att använda deflate.DeflateIO istället för funktionerna i denna modul eftersom den tillhandahåller ett strömmande gränssnitt för komprimering och dekomprimering vilket är bekvämt och mer minneseffektivt vid läsning eller skrivning av komprimerad data till en fil, socket eller ström.
Tillgänglighet:
Denna modul ingår inte i OpenMV Cam som standard, eftersom den duplicerar funktionalitet som redan tillhandahålls av modulen
deflate.En kopia kan installeras (eller frysas in i anpassad fast programvara) från micropython-lib (källkod). Se Pakethantering för mer information. Denna dokumentation beskriver den modulen.
Komprimering är endast tillgänglig om komprimering är tillgänglig i den inbyggda modulen
deflate– det vill säga inte på de STM32-baserade OpenMV Cam-enheterna (se dess tillgänglighetsnotering ovan).
Funktioner¶
Klasser¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Denna klass kan användas för att omsluta ett fileobj som är vilket strömliknande objekt som helst, såsom en fil, socket eller ström (inklusive
io.BytesIO). Den är själv en ström och implementerar standardmetoderna read/readinto/write/close.När argumentet mode är
"rb"kommer läsningar från GzipFile-instansen att dekomprimera datan i den underliggande strömmen och returnera dekomprimerad data.Om komprimeringsstöd är aktiverat kan argumentet mode sättas till
"wb", och skrivningar till GzipFile-instansen komprimeras och skrivs till den underliggande strömmen.Som standard läser och skriver GzipFile-klassen data med gzip-filformatet, inklusive ett huvud och en sidfot med kontrollsumma och en fönsterstorlek på 512 byte.
Argumenten file, compresslevel och mtime stöds inte. fileobj och mode måste alltid anges som nyckelordsargument.
Exempel¶
Ett typiskt användningsfall för gzip.GzipFile är att läsa eller skriva en komprimerad fil från lagring:
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)
För vägledning om hur man arbetar med gzip-källor och väljer fönsterstorlek, se noteringen i slutet av deflate-dokumentationen.