¿Cómo crear un archivo zip de un directorio?
¿Cómo puedo crear un archivo zip de una estructura de directorios en Python?
Aceptado
La forma más sencilla es utilizar shutil.make_archive
. Admite formatos zip y tar.
import shutil
shutil.make_archive(output_filename, 'zip', dir_name)
Si necesita hacer algo más complicado que comprimir todo el directorio (como omitir ciertos archivos), deberá profundizar en el zipfile
módulo como otros han sugerido.
Como otros han señalado, deberías usar zipfile . La documentación le indica qué funciones están disponibles, pero realmente no explica cómo puede usarlas para comprimir un directorio completo. Creo que es más fácil de explicar con un código de ejemplo:
import os
import zipfile
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file),
os.path.relpath(os.path.join(root, file),
os.path.join(path, '..')))
with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipdir('tmp/', zipf)