gzip — gzip-compressie & -decompressie¶
Deze module maakt compressie en decompressie van binaire gegevens mogelijk met het DEFLATE-algoritme dat door het gzip-bestandsformaat wordt gebruikt. Ze biedt eenmalige compress()/decompress()-hulpfuncties en een streaming GzipFile-wrapper rond een onderliggend bestands- of stream-object.
Notitie
Geef de voorkeur aan het gebruik van deflate.DeflateIO in plaats van de functies in deze module, aangezien die een streaming-interface voor compressie en decompressie biedt, wat handig en geheugenefficiënter is bij het lezen of schrijven van gecomprimeerde gegevens naar een bestand, socket of stream.
Beschikbaarheid:
Deze module is standaard niet inbegrepen op de OpenMV Cam, omdat ze functionaliteit dupliceert die al door de
deflate-module wordt geboden.Een kopie kan worden geïnstalleerd (of bevroren in aangepaste firmware) vanuit micropython-lib (bron). Zie Pakketbeheer voor meer informatie. Deze documentatie beschrijft die module.
Compressie is alleen beschikbaar als compressie beschikbaar is in de ingebouwde
deflate-module – dat wil zeggen, niet op de op STM32 gebaseerde OpenMV Cams (zie de beschikbaarheidsopmerking hierboven).
Functies¶
Klassen¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Deze klasse kan worden gebruikt om een fileobj te omhullen, wat elk stream-achtig object kan zijn, zoals een bestand, socket of stream (inclusief
io.BytesIO). Ze is zelf een stream en implementeert de standaard read/readinto/write/close-methoden.Wanneer het mode-argument
"rb"is, zullen reads van de GzipFile-instantie de gegevens in de onderliggende stream decomprimeren en gedecomprimeerde gegevens teruggeven.Als compressie-ondersteuning is ingeschakeld, kan het mode-argument worden ingesteld op
"wb", en zullen writes naar de GzipFile-instantie worden gecomprimeerd en naar de onderliggende stream worden geschreven.Standaard zal de GzipFile-klasse gegevens lezen en schrijven met het gzip-bestandsformaat, inclusief een header en footer met checksum en een vensergrootte van 512 bytes.
De argumenten file, compresslevel en mtime worden niet ondersteund. fileobj en mode moeten altijd als sleutelwoordargumenten worden opgegeven.
Voorbeelden¶
Een typisch gebruiksgeval voor gzip.GzipFile is het lezen of schrijven van een gecomprimeerd bestand vanuit opslag:
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)
Voor richtlijnen bij het werken met gzip-bronnen en het kiezen van de vensergrootte, zie de opmerking aan het einde van de deflate-documentatie.