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.