gzip — compressão e descompressão gzip¶
Este módulo permite a compressão e descompressão de dados binários com o algoritmo DEFLATE usado pelo formato de arquivo gzip. Ele fornece os auxiliares de uso único compress()/decompress() e um wrapper de fluxo GzipFile em torno de um arquivo ou objeto de fluxo subjacente.
Nota
Prefira usar deflate.DeflateIO em vez das funções deste módulo, pois ela fornece uma interface de fluxo para compressão e descompressão, que é conveniente e mais eficiente em memória ao trabalhar com leitura ou escrita de dados comprimidos em um arquivo, socket ou fluxo.
Disponibilidade:
Este módulo não está incluído na OpenMV Cam por padrão, pois ele duplica funcionalidade já fornecida pelo módulo
deflate.Uma cópia pode ser instalada (ou congelada em firmware personalizado) a partir do micropython-lib (fonte). Veja Gerenciamento de pacotes para mais informações. Esta documentação descreve esse módulo.
A compressão só está disponível se a compressão estiver disponível no módulo embutido
deflate– isto é, não nas OpenMV Cams baseadas em STM32 (veja a nota de disponibilidade dele acima).
Funções¶
Classes¶
- class gzip.GzipFile(*, fileobj, mode: str)¶
Esta classe pode ser usada para encapsular um fileobj, que é qualquer objeto semelhante a fluxo, como um arquivo, socket ou fluxo (incluindo
io.BytesIO). Ela é, ela própria, um fluxo e implementa os métodos padrão read/readinto/write/close.Quando o argumento mode é
"rb", as leituras da instância de GzipFile descomprimirão os dados no fluxo subjacente e retornarão os dados descomprimidos.Se o suporte a compressão estiver habilitado, o argumento mode pode ser definido como
"wb", e as escritas na instância de GzipFile serão comprimidas e gravadas no fluxo subjacente.Por padrão, a classe GzipFile lerá e gravará dados usando o formato de arquivo gzip, incluindo um cabeçalho e rodapé com checksum e um tamanho de janela de 512 bytes.
Os argumentos file, compresslevel e mtime não são suportados. fileobj e mode devem sempre ser especificados como argumentos nomeados.
Exemplos¶
Um caso de uso típico de gzip.GzipFile é ler ou gravar um arquivo comprimido a partir do armazenamento:
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 orientações sobre como trabalhar com fontes gzip e escolher o tamanho da janela, veja a nota no fim da documentação do deflate.