gzip — gzip-Kompression & -Dekompression

Dieses Modul ermöglicht die Kompression und Dekompression von Binärdaten mit dem DEFLATE-Algorithmus, der vom gzip-Dateiformat verwendet wird. Es stellt einmalige compress()/decompress()-Hilfsfunktionen sowie einen streamenden GzipFile-Wrapper um ein zugrunde liegendes Datei- oder Stream-Objekt bereit.

Bemerkung

Bevorzugen Sie die Verwendung von deflate.DeflateIO gegenüber den Funktionen in diesem Modul, da es eine Streaming-Schnittstelle zur Kompression und Dekompression bietet, die praktisch und speichereffizienter ist, wenn komprimierte Daten aus einer Datei, einem Socket oder einem Stream gelesen oder dorthin geschrieben werden.

Verfügbarkeit:

  • Dieses Modul ist standardmäßig nicht auf der OpenMV Cam enthalten, da es Funktionalität dupliziert, die bereits vom Modul deflate bereitgestellt wird.

  • Eine Kopie kann aus micropython-lib installiert (oder in eine benutzerdefinierte Firmware eingefroren) werden (Quelle). Weitere Informationen finden Sie unter Paketverwaltung. Diese Dokumentation beschreibt jenes Modul.

  • Kompression ist nur verfügbar, wenn Kompression im eingebauten Modul deflate verfügbar ist – das heißt, nicht auf den STM32-basierten OpenMV Cams (siehe den obigen Verfügbarkeitshinweis).

Funktionen

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

Wrapper um das eingebaute open(), der eine GzipFile-Instanz zurückgibt.

gzip.decompress(data: bytes, /) bytes

Dekomprimiert data in ein Bytes-Objekt.

gzip.compress(data: bytes, /) bytes

Komprimiert data in ein Bytes-Objekt.

Klassen

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

Diese Klasse kann verwendet werden, um ein fileobj zu umschließen, das ein beliebiges stream-ähnliches Objekt wie eine Datei, einen Socket oder einen Stream (einschließlich io.BytesIO) ist. Sie ist selbst ein Stream und implementiert die Standardmethoden read/readinto/write/close.

Wenn das mode-Argument "rb" ist, dekomprimieren Lesevorgänge von der GzipFile-Instanz die Daten im zugrunde liegenden Stream und geben dekomprimierte Daten zurück.

Wenn Kompressionsunterstützung aktiviert ist, kann das mode-Argument auf "wb" gesetzt werden, und Schreibvorgänge in die GzipFile-Instanz werden komprimiert und in den zugrunde liegenden Stream geschrieben.

Standardmäßig liest und schreibt die GzipFile-Klasse Daten im gzip-Dateiformat, einschließlich eines Headers und Footers mit Prüfsumme und einer Fenstergröße von 512 Bytes.

Die Argumente file, compresslevel und mtime werden nicht unterstützt. fileobj und mode müssen immer als Schlüsselwortargumente angegeben werden.

Beispiele

Ein typischer Anwendungsfall für gzip.GzipFile ist das Lesen oder Schreiben einer komprimierten Datei aus dem Speicher:

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)

Hinweise zum Umgang mit gzip-Quellen und zur Wahl der Fenstergröße finden Sie im Hinweis am Ende der deflate-Dokumentation.