gzip — compression et décompression gzip

Ce module permet la compression et la décompression de données binaires avec l”algorithme DEFLATE utilisé par le format de fichier gzip. Il fournit des assistants compress()/decompress() à passe unique ainsi qu’un wrapper de flux GzipFile autour d’un objet fichier ou flux sous-jacent.

Note

Préférez utiliser deflate.DeflateIO plutôt que les fonctions de ce module, car il fournit une interface de flux pour la compression et la décompression, ce qui est pratique et plus efficace en mémoire lors de la lecture ou de l’écriture de données compressées vers un fichier, un socket ou un flux.

Disponibilité :

  • Ce module n’est pas inclus sur l’OpenMV Cam par défaut, car il fait double emploi avec une fonctionnalité déjà fournie par le module deflate.

  • Une copie peut être installée (ou figée dans un micrologiciel personnalisé) à partir de micropython-lib (source). Consultez Gestion des paquets pour plus d’informations. Cette documentation décrit ce module.

  • La compression n’est disponible que si la compression est disponible dans le module intégré deflate – c’est-à-dire pas sur les OpenMV Cam basées sur STM32 (voir sa note de disponibilité ci-dessus).

Fonctions

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

Wrapper autour de la fonction intégrée open() renvoyant une instance de GzipFile.

gzip.decompress(data: bytes, /) bytes

Décompresse data en un objet bytes.

gzip.compress(data: bytes, /) bytes

Compresse data en un objet bytes.

Classes

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

Cette classe peut être utilisée pour envelopper un fileobj, qui est tout objet de type flux tel qu’un fichier, un socket ou un flux (y compris io.BytesIO). Elle est elle-même un flux et implémente les méthodes standard read/readinto/write/close.

Lorsque l’argument mode vaut "rb", les lectures depuis l’instance de GzipFile décompresseront les données du flux sous-jacent et renverront les données décompressées.

Si la prise en charge de la compression est activée, l’argument mode peut être réglé sur "wb", et les écritures dans l’instance de GzipFile seront compressées et écrites dans le flux sous-jacent.

Par défaut, la classe GzipFile lit et écrit les données au format de fichier gzip, y compris un en-tête et un pied de page avec somme de contrôle et une taille de fenêtre de 512 octets.

Les arguments file, compresslevel et mtime ne sont pas pris en charge. fileobj et mode doivent toujours être spécifiés en tant qu’arguments nommés.

Exemples

Un cas d’usage typique de gzip.GzipFile consiste à lire ou écrire un fichier compressé depuis le stockage :

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)

Pour des conseils sur le travail avec des sources gzip et le choix de la taille de fenêtre, consultez la note à la fin de la documentation de deflate.