gzip — gzip-pakkaus ja -purku

Tämä moduuli mahdollistaa binääridatan pakkaamisen ja purkamisen gzip-tiedostomuodon käyttämällä DEFLATE-algoritmilla. Se tarjoaa kertaluonteiset compress()/decompress() -apufunktiot ja striimaavan GzipFile -kääreen taustalla olevan tiedosto- tai striimiolion ympärille.

Muista

Suosi deflate.DeflateIO -luokan käyttöä tämän moduulin funktioiden sijaan, koska se tarjoaa striimaavan rajapinnan pakkaukseen ja purkuun, mikä on kätevää ja muistitehokkaampaa luettaessa tai kirjoitettaessa pakattua dataa tiedostoon, soketiin tai striimiin.

Saatavuus:

  • Tätä moduulia ei ole oletuksena mukana OpenMV Camissa, koska se monistaa toiminnallisuuden, jonka deflate -moduuli jo tarjoaa.

  • Kopion voi asentaa (tai jäädyttää mukautettuun laiteohjelmistoon) micropython-lib -kirjastosta (lähde). Katso lisätietoja kohdasta Pakettien hallinta. Tämä dokumentaatio kuvaa kyseistä moduulia.

  • Pakkaus on käytettävissä vain, jos pakkaus on käytettävissä sisäänrakennetussa deflate -moduulissa – toisin sanoen ei STM32-pohjaisissa OpenMV Cameissa (katso sen saatavuushuomautus yllä).

Funktiot

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

Käärii sisäänrakennetun open() -funktion ja palauttaa GzipFile-ilmentymän.

gzip.decompress(data: bytes, /) bytes

Purkaa data -datan bytes-olioksi.

gzip.compress(data: bytes, /) bytes

Pakkaa data -datan bytes-olioksi.

Luokat

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

Tällä luokalla voidaan kääriä fileobj, joka on mikä tahansa striimin kaltainen olio, kuten tiedosto, soketti tai striimi (mukaan lukien io.BytesIO). Se on itse striimi ja toteuttaa standardit read/readinto/write/close-metodit.

Kun mode -argumentti on "rb", lukeminen GzipFile-ilmentymästä purkaa taustalla olevan striimin datan ja palauttaa puretun datan.

Jos pakkaustuki on käytössä, mode -argumentti voidaan asettaa arvoon "wb", jolloin kirjoitukset GzipFile-ilmentymään pakataan ja kirjoitetaan taustalla olevaan striimiin.

Oletuksena GzipFile-luokka lukee ja kirjoittaa dataa gzip-tiedostomuotoa käyttäen, mukaan lukien otsikko ja alatunniste tarkistussummalla sekä 512 tavun ikkunakoolla.

Argumentteja file, compresslevel ja mtime ei tueta. fileobj ja mode on aina määritettävä avainsana-argumentteina.

Esimerkkejä

Tyypillinen gzip.GzipFile -luokan käyttötapaus on pakatun tiedoston lukeminen tai kirjoittaminen tallennustilasta:

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)

Ohjeita gzip-lähteiden kanssa työskentelyyn ja ikkunakoon valintaan löytyy huomautuksesta kohdassa deflate-dokumentaation loppu.