Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: deletethisaccount en Septiembre 15, 2016, 03:38:52 PM

Título: [SOLUCIONADO] ¿Cómo podria comprimir una carpeta en Python?
Publicado por: deletethisaccount en Septiembre 15, 2016, 03:38:52 PM
Cómo podría comprimir una carpeta desde el cmd o por python?
Título: Re:Cómo podria comprimir una carpeta...?
Publicado por: Stiuvert en Septiembre 15, 2016, 06:19:13 PM
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) [Seleccionar]
  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) [Seleccionar]
  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) [Seleccionar]
  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) [Seleccionar]
  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) [Seleccionar]
  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: elclubdelprogramador.com



Para hacerlo con cmd (Batch):

Código (dos) [Seleccionar]
zip -r -9 "c:\carpeta.zip" "carpeta"
Título: Re:¿Cómo podria comprimir una carpeta en Python?
Publicado por: deletethisaccount en Septiembre 16, 2016, 10:03:50 AM
Grax