gzip — compresión y descompresión gzip

Este módulo permite comprimir y descomprimir datos binarios con el algoritmo DEFLATE que utiliza el formato de archivo gzip. Proporciona los ayudantes de un solo paso compress()/decompress() y un envoltorio de flujo GzipFile alrededor de un objeto de archivo o flujo subyacente.

Nota

Prefiera utilizar deflate.DeflateIO en lugar de las funciones de este módulo, ya que proporciona una interfaz de flujo para la compresión y descompresión que es cómoda y más eficiente en memoria al leer o escribir datos comprimidos en un archivo, socket o flujo.

Disponibilidad:

  • Este módulo no se incluye en la OpenMV Cam de forma predeterminada, ya que duplica una funcionalidad que ya proporciona el módulo deflate.

  • Se puede instalar una copia (o congelarla en firmware personalizado) desde micropython-lib (fuente). Consulte Gestión de paquetes para más información. Esta documentación describe ese módulo.

  • La compresión solo está disponible si la compresión está disponible en el módulo integrado deflate, es decir, no en las OpenMV Cams basadas en STM32 (consulte su nota de disponibilidad más arriba).

Funciones

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

Envoltorio alrededor de la función integrada open() que devuelve una instancia de GzipFile.

gzip.decompress(data: bytes, /) bytes

Descomprime data en un objeto bytes.

gzip.compress(data: bytes, /) bytes

Comprime data en un objeto bytes.

Clases

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

Esta clase puede usarse para envolver un fileobj que sea cualquier objeto similar a un flujo como un archivo, socket o flujo (incluido io.BytesIO). Es en sí misma un flujo e implementa los métodos estándar read/readinto/write/close.

Cuando el argumento mode es "rb", las lecturas de la instancia de GzipFile descomprimirán los datos del flujo subyacente y devolverán datos descomprimidos.

Si el soporte de compresión está habilitado, el argumento mode puede establecerse en "wb", y las escrituras en la instancia de GzipFile se comprimirán y escribirán en el flujo subyacente.

De forma predeterminada, la clase GzipFile leerá y escribirá datos usando el formato de archivo gzip, incluyendo una cabecera y un pie de página con suma de comprobación y un tamaño de ventana de 512 bytes.

Los argumentos file, compresslevel y mtime no se admiten. fileobj y mode deben especificarse siempre como argumentos de palabra clave.

Ejemplos

Un caso de uso típico de gzip.GzipFile es leer o escribir un archivo comprimido en el almacenamiento:

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)

Para orientación sobre cómo trabajar con fuentes gzip y elegir el tamaño de ventana, consulte la nota al final de la documentación de deflate.