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.