copiar con comprimir archivos python file zip python-2.5

archivos - ¿Cómo puedo comprimir el contenido de una carpeta usando Python(versión 2.5)?



comprimir archivos con python (3)

Una vez que tengo todos los archivos que necesito en una carpeta en particular, me gustaría que mi secuencia de comandos python comprima el contenido de la carpeta.

es posible?

¿Y cómo podría hacerlo?


Aquí hay una versión recursiva

def zipfolder(path, relname, archive): paths = os.listdir(path) for p in paths: p1 = os.path.join(path, p) p2 = os.path.join(relname, p) if os.path.isdir(p1): zipfolder(p1, p2, archive) else: archive.write(p1, p2) def create_zip(path, relname, archname): archive = zipfile.ZipFile(archname, "w", zipfile.ZIP_DEFLATED) if os.path.isdir(path): zipfolder(path, relname, archive) else: archive.write(path, relname) archive.close()


La versión adaptada del script es:

#!/usr/bin/env python from __future__ import with_statement from contextlib import closing from zipfile import ZipFile, ZIP_DEFLATED import os def zipdir(basedir, archivename): assert os.path.isdir(basedir) with closing(ZipFile(archivename, "w", ZIP_DEFLATED)) as z: for root, dirs, files in os.walk(basedir): #NOTE: ignore empty directories for fn in files: absfn = os.path.join(root, fn) zfn = absfn[len(basedir)+len(os.sep):] #XXX: relative path z.write(absfn, zfn) if __name__ == ''__main__'': import sys basedir = sys.argv[1] archivename = sys.argv[2] zipdir(basedir, archivename)

Ejemplo:

C:/zipdir> python -mzipdir c:/tmp/test test.zip

Crea ''C:/zipdir/test.zip'' archivo ''C:/zipdir/test.zip'' con el contenido del directorio ''c:/tmp/test'' .