J'ai fait une petite fonction d'aide:
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()
Le problème est que tous mes fichiers ne sont PAS COMPRIMÉS! Les fichiers sont de la même taille et, en fait, seule l'extension est modifiée en ".Zip" (de ".xls" dans ce cas).
J'exécute python 2.5 sur winXP sp2.
En effet, ZipFile
vous oblige à spécifier la méthode de compression. Si vous ne le spécifiez pas, il suppose que la méthode de compression est zipfile.Zip_STORED
, qui stocke uniquement les fichiers sans les compresser. Vous devez spécifier la méthode à zipfile.Zip_DEFLATED
. Vous aurez besoin d'avoir le module zlib
installé pour cela (il est généralement installé par défaut).
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 __== '__main__':
main()
Il existe un moyen très simple de compresser le format Zip
,
Utiliser dans shutil.make_archive
bibliothèque.
Par exemple:
import shutil
shutil.make_archive(file_name, 'Zip', file location after compression)
Peut voir une documentation plus complète à: ici