¿Cómo crear un archivo zip de un directorio?

Resuelto Martha Yi asked hace 14 años • 30 respuestas

¿Cómo puedo crear un archivo zip de una estructura de directorios en Python?

Martha Yi avatar Dec 06 '09 18:12 Martha Yi
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 zipfilemódulo como otros han sugerido.

crdavis avatar Sep 03 '2014 17:09 crdavis

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)
Mark Byers avatar Dec 06 '2009 11:12 Mark Byers