¿Te gustaría aprender Python desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!

 

Si has estado utilizando ordenadores desde hace tiempo, es probable que te hayas encontrado con archivos con la extensión zip. Son archivos especiales que contienen contenido comprimido de muchos otros archivos, carpetas y subcarpetas. Esto los hace muy útiles para transferir archivos por Internet. ¿Sabías que puedes utilizar Python para comprimir y extraer archivos?

En este tutorial te mostraré cómo utilizar el módulo zipfile en Python para extraer o comprimir tanto archivos individuales, como múltiples ficheros a la vez.

Comprimir archivos individuales

Esto es muy sencillo y requiere muy poco código. Empezamos importando el módulo zipfile y abrimos el fichero zip en modo escritura definiendo el segundo parámetro como ‘w’. El primero parámetro es la ruta ruta al propio archivo. Este es el código que debes utilizar:

import zipfile
         
jungle_zip = zipfile.ZipFile('C:\Stories\Fantasy\jungle.zip', 'w')
jungle_zip.write('C:\Stories\Fantasy\jungle.pdf', compress_type=zipfile.ZIP_DEFLATED)
 
jungle_zip.close()

Puedes definir distintos métodos de compresión a la hora de comprimir archivos. Los nuevos métodos BZIP2 y LZMA se agregaron a Python en la versión 3.3, pero hay ciertas herramientas que no soportan estos dos métodos de compresión. Es por eso que lo más seguro es utilizar el método DEFLATED.

Comprimir múltiples ficheros

Esto es un poco más complejo ya que es necesario iterar sobre todos los archivos. El siguiente código debe comprimir todos los pdfs en una carpeta determinada:

import os
import zipfile
 
fantasy_zip = zipfile.ZipFile('C:\Stories\Fantasy\archive.zip', 'w')
 
for folder, subfolders, files in os.walk('C:\Stories\Fantasy'):
 
    for file in files:
        if file.endswith('.pdf'):
            fantasy_zip.write(os.path.join(folder, file), os.path.relpath(os.path.join(folder,file), 'C:\Stories\Fantasy'), compress_type = zipfile.ZIP_DEFLATED)
 
fantasy_zip.close()


Hemos importado el módulo os y hemos usado su método walk () para revisar todos los archivos y subcarpetas dentro de nuestra carpeta original. Sólo comprimo los archivos pdf en el directorio. También puedes crear diferentes ficheros archivados para cada formato utilizando instrucciones if.

Si no deseas conservar la estructura de directorios, puedes poner todos los archivos juntos utilizando la siguiente línea:

fantasy_zip.write(os.path.join(folder, file), file, compress_type = zipfile.ZIP_DEFLATED)

El método write() admite tres parámetros. El primer parámetro es el nombre del archivo que queremos comprimir. El segundo parámetro es opcional y permite especificar un nombre de archivo diferente para el archivo comprimido. Si no se especifica nada, se utiliza el nombre original.

Extrayendo todos los ficheros

Puedes utilizar el método extractall() para extraer todos los archivos y carpetas de un archivo zip en el directorio de trabajo actual. También puede pasarle un nombre de carpeta a extractall() para extraer todos los archivos y carpetas en un directorio específico. Si la carpeta que le pasaste no existe, este método creará una nueva. Aquí está el código que puedes utilizar para extraer archivos:

import zipfile
         
fantasy_zip = zipfile.ZipFile('C:\Stories\Fantasy\archive.zip')
fantasy_zip.extractall('C:\Library\Stories\Fantasy')
 
fantasy_zip.close()

Si quieres extraer varios archivos, debes proporcionale el nombre de los archivos que deseas extraer en una lista.

Extrayendo archivos individuales

Esto es muy similar a extraer múltiples ficheros. La única diferencia es que debes pasar el nombre del archivo primero y la ruta para extraerlos más atrde. Además, debes utilizar el método extract() en lugar de extractall(). Aquí tienes un snippet básico para extraer archivos individuales.

import zipfile
         
fantasy_zip = zipfile.ZipFile('C:\Stories\Fantasy\archive.zip')
fantasy_zip.extract('Fantasy Jungle.pdf', 'C:\Stories\Fantasy')
 
fantasy_zip.close()

Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.

¿Te gustaría aprender Python desde cero?
Tenemos los cursos que necesitas.¡Haz clic aquí!
 
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
1 Comment
La mas nueva
Más antiguo Más votada
Comentarios.
Ver todos los comentarios
rafaelteran
5 Años Texto atrás

Estimados, Alguien que hable español y me pueda contar de que se trata esto? Actualmente estoy trabajando para la fundación victor jara y recopilo información de lo que pasa en el mundo en torno al recuerdo de victor Espero alguien pueda escribirme y ponerse en contacto, lo necesitamos con urgencia. Saludos y viva la Victor.

1
0
¿Te gusta este articulo? por favor comentax