[SOLUCIONADO] ¿Cómo podria comprimir una carpeta en Python?

Iniciado por deletethisaccount, Septiembre 15, 2016, 03:38:52 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 15, 2016, 03:38:52 PM Ultima modificación: Septiembre 16, 2016, 10:44:45 AM por Stiuvert
Cómo podría comprimir una carpeta desde el cmd o por python?

Para crear un nuevo archivo, nuevamente nos basamos en el módulo zipfile en Python, solo necesitamos instanciar un nuevo objeto en modo escritura y utilizar el método write.

Código: python
  import zipfile
print 'Creando el archivo Zip'
zf = zipfile.ZipFile('nombre_archivo.zip', mode='w')
try:
    print 'Agregamos un archivo'
    zf.write('archivo.extension')
finally:
    print 'Cerrando archivo'
    zf.close() 



Añadiendo Archivos a un ZIP existente

Una vez creados los nuevos archivos ZIP, podemos actualizar su contenido, añadiendo nuevos al final del mismo. Para poder hacerlo debemos abrir el archivo ZIP en modo 'a' de append.


Código: python
  print 'Agregando un nuevo archivo al ZIP'
zf = zipfile.ZipFile('archivo.zip', mode='a')
try:
    zf.write('otro_archivo.txt')
finally:
    zf.close() 



Añadiendo Compresión

El snippet anterior nos añade los archivos que deseemos al archivo ZIP pero sin la compresión, si queremos comprimir los archivos que añadimos (es la idea del archivo ZIP), utilizamos el módulo zlib. Podemos utilizar la compresión para archivos de forma individual o para todo el archivo ZIP utilizando los modos ZIP_DEFLATED (Compresión básica) o el modo por defecto ZIP_STORED (Sin Compresión).


Código: python
  import zipfile
import zlib
compresion = zipfile.ZIP_DEFLATED

print 'Creando Archivo'
zf = zipfile.ZipFile('archivo.zip', mode='w')
try:
    print 'Agregando archivo con compresion standard', compresion
    zf.write('archivo.extension', compress_type=compresion)
finally:
    print 'Cerrando Archivo'
    zf.close() 



Cambiando los nombres de los archivos que se añaden por otros

Podemos cambiar los nombres de los archivos que añadimos al archivo ZIP por otros utilizando el parámetro arcname en el método write.


Código: python
  import zipfile
zf = zipfile.ZipFile('archivo.zip', mode='w')
try:
    zf.write('leeme.txt', arcname='lee_esto.txt')
finally:
    zf.close()



Creando archivos desde otras fuentes de datos

Muchas veces (cuando enviamos archivos por la red, por ejemplo) necesitamos crear y escribir un archivo ZIP utilizando datos que no provienen de algún archivo almacenado en disco, para esto podemos utilizar el método writestr, que añadirá una cadena de bytes directamente.


Código: python
  import zipfile
mensaje = 'Esta informacion no existe en ningun archivo almacenado en disco'
zf = zipfile.ZipFile('archivo.zip',mode='w',compression=zipfile.ZIP_DEFLATED)
try:
    zf.writestr('archivo_inexistente.txt', mensaje)
finally:
    zf.close() 



Fuente: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta



Para hacerlo con cmd (Batch):

Código: dos
zip -r -9 "c:\carpeta.zip" "carpeta"