gzip — gzip kompresija i dekompresija

Ovaj modul omogućuje kompresiju i dekompresiju binarnih podataka pomoću DEFLATE algoritma koji koristi gzip format datoteke. Pruža jednokratne pomoćne funkcije compress()/decompress() i strujni GzipFile omotač oko temeljnog objekta datoteke ili toka.

Napomena

Preferirajte korištenje deflate.DeflateIO umjesto funkcija u ovom modulu jer pruža strujno sučelje za kompresiju i dekompresiju koje je praktično i memorijski učinkovitije pri radu s čitanjem ili zapisivanjem komprimiranih podataka u datoteku, utičnicu ili tok.

Dostupnost:

  • Ovaj modul nije uključen na OpenMV Cam prema zadanim postavkama jer duplicira funkcionalnost koju već pruža modul deflate.

  • Kopija se može instalirati (ili zamrznuti u prilagođeni ugrađeni program (firmware)) iz micropython-lib (izvor). Za više informacija pogledajte Upravljanje paketima. Ova dokumentacija opisuje taj modul.

  • Kompresija je dostupna samo ako je kompresija dostupna u ugrađenom modulu deflate – to jest, ne na OpenMV Cam kamerama temeljenim na STM32 (pogledajte napomenu o dostupnosti gore).

Funkcije

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

Omotač oko ugrađene open() koji vraća instancu GzipFile.

gzip.decompress(data: bytes, /) bytes

Dekomprimira data u bytes objekt.

gzip.compress(data: bytes, /) bytes

Komprimira data u bytes objekt.

Klase

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

Ova klasa može se koristiti za omatanje fileobj koji je bilo koji stream-like objekt poput datoteke, utičnice ili toka (uključujući io.BytesIO). Sama je tok i implementira standardne metode read/readinto/write/close.

Kada je argument mode "rb", čitanja iz instance GzipFile dekomprimirat će podatke u temeljnom toku i vratiti dekomprimirane podatke.

Ako je podrška za kompresiju omogućena, tada se argument mode može postaviti na "wb", a zapisivanja u instancu GzipFile bit će komprimirana i zapisana u temeljni tok.

Prema zadanim postavkama klasa GzipFile čitat će i zapisivati podatke koristeći gzip format datoteke, uključujući zaglavlje i podnožje s kontrolnim zbrojem te veličinom prozora od 512 bajtova.

Argumenti file, compresslevel i mtime nisu podržani. fileobj i mode moraju se uvijek navesti kao imenovani argumenti.

Primjeri

Tipičan slučaj uporabe za gzip.GzipFile je čitanje ili zapisivanje komprimirane datoteke iz pohrane:

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)

Za smjernice o radu s gzip izvorima i odabiru veličine prozora pogledajte napomenu na kraju dokumentacije za deflate.