Creación de archivos ZIP en Python: desde directorio completo a selección personalizada de archivos
Creación de archivos ZIP en Python: desde directorio completo a selección personalizada de archivos
Python facilita la creación de archivos ZIP y TAR, ya sea que necesites comprimir un directorio completo o seleccionar archivos específicos.
Usa shutil.make_archive para un zip rápido de todo un directorio:
shutil.make_archive(nombre_salida, 'zip', dir_name)
Para control granular, la clase zipfile.ZipFile te permite especificar archivos individuales:
ZipFile.write(nombre_archivo)
Paso 1: Preparar el entorno
- Importar los módulos requeridos:
from shutil import make_archive from zipfile import ZipFile from os import path import os
- Asegurar que el archivo origen existe y obtener su ruta absoluta.
if path.exists("guru99.txt"): origen = path.realpath("guru99.txt") - Opcionalmente renombrar un archivo existente para que coincida con el nombre objetivo.
Paso 2: Comprimir el directorio completo
Cuando quieras archivar todo en una carpeta, usa make_archive:
dir_raiz, _ = path.split(origen)
make_archive("guru99_archivo", "zip", dir_raiz)
Esto crea guru99_archivo.zip en el directorio de trabajo actual.
Paso 3: Añadir archivos específicos a un nuevo ZIP
Si necesitas control más fino, la clase ZipFile es ideal:
with ZipFile("testguru99.zip", "w") as nuevo_zip:
nuevo_zip.write("guru99.txt")
nuevo_zip.write("guru99.txt.bak")
La sentencia with cierra automáticamente el archivo cuando termina el bloque.
Paso 4: Verificar el resultado
Abre el archivo ZIP generado en el explorador de archivos de tu sistema operativo para ver el contenido. En Windows, un doble clic mostrará la lista de archivos incluidos.
Capturas de pantalla ilustrativas de un flujo de trabajo típico:







Código completo (Python 3)
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# Obtener ruta absoluta al archivo origen
origen = path.realpath("guru99.txt")
# Opcional: renombrar un archivo existente
os.rename("carrera.guru99.txt", "guru99.txt")
# Archivar el directorio completo que contiene el archivo
dir_raiz, _ = path.split(origen)
make_archive("guru99_archivo", "zip", dir_raiz)
# Crear un segundo ZIP con solo archivos seleccionados
with ZipFile("testguru99.zip", "w") as nuevo_zip:
nuevo_zip.write("guru99.txt")
nuevo_zip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
Resumen
- Para comprimir un directorio completo, llama a
shutil.make_archive('nombre', 'zip', dir_raiz). - Para añadir archivos específicos, usa
ZipFile.write(nombre_archivo)dentro de un bloquewith.
python
- Entrada/Salida de Archivos en Python: Dominando Operaciones de Lectura, Escritura y Gestión
- Domine el Método strip() de Python: Guía Completa y Ejemplos Prácticos
- Domine str.count() en Python: Cómo Contar Caracteres y Subcadenas con Ejemplos
- Función round() en Python explicada con ejemplos prácticos
- Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
- Python timeit(): medición de tiempo de ejecución con ejemplos prácticos
- Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas
- Python list.count(): Guía Experta con Ejemplos Prácticos
- Python list.index(): Cómo Encontrar Posiciones de Elementos con Ejemplos Prácticos
- Programación de Extensiones en Python con C: Crea Módulos Nativos Rápidos
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos