zipfile cria e consulta arquivos ZIP sem dependência externa. O formato é útil para intercâmbio porque preserva uma árvore de nomes e é reconhecido por muitos sistemas.
Exemplo prático
from pathlib import Path
from zipfile import ZIP_DEFLATED, ZipFile
source = Path("notes.txt")
source.write_text("release notes", encoding="utf-8")
with ZipFile("bundle.zip", "w", compression=ZIP_DEFLATED) as archive:
archive.write(source, arcname="docs/notes.txt")
with ZipFile("bundle.zip") as archive:
print(archive.namelist())
Criar um ZIP previsível
Defina arcname para não vazar caminhos absolutos da máquina. Escolha a compressão conscientemente e use um bloco with para gravar o diretório central mesmo quando o trabalho termina.
Extração segura
Antes de extrair conteúdo recebido, rejeite caminhos absolutos e confirme que cada destino resolvido permanece na pasta autorizada. Também limite quantidade, tamanho total e taxa de expansão. Um ZIP válido ainda pode conter dados maliciosos.
Continue estudando
Leia também Pathlib Python: Guia Completo para Manipular Arquivos e shutil em Python: Copiar, Mover e Arquivar. A documentação oficial do Python, consultada em 22 de julho de 2026, detalha a API e o comportamento entre versões.