O módulo gzip expõe uma interface parecida com open(). Isso permite processar logs, CSVs e respostas arquivadas linha a linha, sem carregar o conteúdo descompactado inteiro na memória.

Exemplo prático

import gzip

lines = ["id,name\n", "1,Ana\n", "2,Leo\n"]
with gzip.open("report.csv.gz", "wt", encoding="utf-8", newline="") as file:
    file.writelines(lines)

with gzip.open("report.csv.gz", "rt", encoding="utf-8") as file:
    print(file.readline().strip())

Texto, bytes e streaming

Use rt ou wt com encoding para texto e rb ou wb para bytes. Iterar sobre o arquivo mantém o consumo de memória previsível; read() sem limite pode anular essa vantagem.

Limites e integridade

Gzip comprime um fluxo, mas não organiza vários arquivos como um pacote. Dados altamente compactados podem se expandir muito, então imponha limites e trate BadGzipFile. Para coleções de arquivos, escolha ZIP ou TAR conforme a interoperabilidade necessária.

Continue estudando

Leia também shutil em Python: Copiar, Mover e Arquivar e Pathlib Python: Guia Completo para Manipular Arquivos. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.