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

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

Wrapper rond de ingebouwde open() die een GzipFile-instantie teruggeeft.

gzip.decompress(data: bytes, /) bytes

Decomprimeert data naar een bytes-object.

gzip.compress(data: bytes, /) bytes

Comprimeert data naar een bytes-object.

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.