gzip — kompresja i dekompresja gzip

Ten moduł umożliwia kompresję i dekompresję danych binarnych za pomocą algorytmu DEFLATE używanego przez format pliku gzip. Udostępnia jednorazowe pomocniki compress()/decompress() oraz strumieniowy wrapper GzipFile wokół bazowego obiektu pliku lub strumienia.

Informacja

Zamiast funkcji z tego modułu preferuj deflate.DeflateIO, ponieważ udostępnia ona strumieniowy interfejs do kompresji i dekompresji, co jest wygodne i bardziej oszczędne pod względem pamięci podczas pracy z odczytem lub zapisem skompresowanych danych do pliku, gniazda lub strumienia.

Dostępność:

  • Ten moduł nie jest domyślnie dołączany do OpenMV Cam, ponieważ powiela funkcjonalność udostępnianą już przez moduł deflate.

  • Kopię można zainstalować (lub zamrozić w niestandardowym oprogramowaniu układowym) z micropython-lib (źródło). Zobacz Zarządzanie pakietami, aby uzyskać więcej informacji. Niniejsza dokumentacja opisuje ten moduł.

  • Kompresja jest dostępna tylko wtedy, gdy kompresja jest dostępna we wbudowanym module deflate – czyli nie na kamerach OpenMV Cam opartych na STM32 (zobacz notatkę o dostępności powyżej).

Funkcje

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

Wrapper wokół wbudowanej funkcji open() zwracający instancję GzipFile.

gzip.decompress(data: bytes, /) bytes

Dekompresuje data do obiektu bytes.

gzip.compress(data: bytes, /) bytes

Kompresuje data do obiektu bytes.

Klasy

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

Tej klasy można użyć do opakowania fileobj, którym jest dowolny obiekt podobny do strumienia, taki jak plik, gniazdo lub strumień (w tym io.BytesIO). Sama jest strumieniem i implementuje standardowe metody read/readinto/write/close.

Gdy argument mode ma wartość "rb", odczyty z instancji GzipFile będą dekompresować dane w bazowym strumieniu i zwracać zdekompresowane dane.

Jeśli obsługa kompresji jest włączona, argument mode można ustawić na "wb", a zapisy do instancji GzipFile będą kompresowane i zapisywane do bazowego strumienia.

Domyślnie klasa GzipFile odczytuje i zapisuje dane przy użyciu formatu pliku gzip, w tym nagłówka i stopki z sumą kontrolną oraz rozmiarem okna 512 bajtów.

Argumenty file, compresslevel i mtime nie są obsługiwane. fileobj i mode muszą być zawsze podawane jako argumenty nazwane.

Przykłady

Typowym przypadkiem użycia gzip.GzipFile jest odczyt lub zapis skompresowanego pliku z pamięci masowej:

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)

Wskazówki dotyczące pracy ze źródłami gzip i wyboru rozmiaru okna znajdziesz w notatce na końcu dokumentacji deflate.