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¶
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.