zipfile crea e inspecciona archivos ZIP sin dependencias externas. El formato es útil para intercambio porque conserva un árbol de nombres y muchos sistemas lo reconocen.

Ejemplo práctico

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())

Crear un ZIP predecible

Define arcname para no filtrar rutas absolutas del equipo. Elige la compresión conscientemente y usa un bloque with para finalizar el directorio central.

Extracción segura

Antes de extraer contenido recibido, rechaza rutas absolutas y comprueba que cada destino resuelto siga dentro del directorio permitido. Limita también cantidad, tamaño total y expansión. Un ZIP válido aún puede contener datos maliciosos.

Sigue aprendiendo

Consulta también Pathlib Python: Guía Completa para Manipular Archivos y shutil en Python: Copiar, Mover y Comprimir. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API y el comportamiento entre versiones.