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.