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