copiar con comprimir archivos python compression zipfile

con - El módulo python zipfile no parece estar comprimiendo mis archivos



comprimir archivos con python (2)

Hice una pequeña función de ayudante:

import zipfile def main(archive_list=[],zfilename=''default.zip''): print zfilename zout = zipfile.ZipFile(zfilename, "w") for fname in archive_list: print "writing: ", fname zout.write(fname) zout.close() if __name__ == ''__main__'': main()

¡El problema es que todos mis archivos NO están siendo comprimidos! Los archivos son del mismo tamaño y, de hecho, solo la extensión se cambia a ".zip" (de ".xls" en este caso).

Estoy ejecutando python 2.5 en winXP sp2.


Esto se debe a que ZipFile requiere que especifiques el método de compresión. Si no lo especifica, asume que el método de compresión es zipfile.ZIP_STORED , que solo almacena los archivos sin comprimirlos. zipfile.ZIP_DEFLATED especificar el método para que sea zipfile.ZIP_DEFLATED . Necesitará tener el módulo zlib instalado para esto ( generalmente se instala por defecto).

import zipfile def main(archive_list=[],zfilename=''default.zip''): print zfilename zout = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED) # <--- this is the change you need to make for fname in archive_list: print "writing: ", fname zout.write(fname) zout.close() if __name__ == ''__main__'': main()


Hay una forma realmente fácil de comprimir un formato de ''zip file'' ,

Úselo en la biblioteca shutil.make_archive .

Por ejemplo:

import shutil shutil.make_archive(file_name, ''zip'', file location after compression)

Puede ver documentación más extensa en: https://docs.python.org/2/library/shutil.html#shutil.make_archive