2010-01-21 3 views
3

Je suis en train d'utiliser le module zipfile en Python pour créer de simples fichiers zip:Python zipfile se bloque lors de l'écriture

import zipfile 

files = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') 
zip_file_name = 'zipfile_test.zip' 

zfh = zipfile.ZipFile(zip_file_name, 'w') 
for file in files: 
    print 'Archiving file %s' % file 
    zfh.write(zip_file_name) 
zfh.close() 

Les fichiers un h sont dans mon répertoire de travail et sont vides, utiliser touch a b c d e f g h pour tester. Après avoir ajouté les 7 premiers éléments au fichier zip, il se bloque sur le dernier, mais continue d'écrire dans le fichier zip jusqu'à ce que l'espace soit épuisé. Cela se produit sur les deux systèmes sur lesquels je l'ai testé, l'un avec Python 2.4.3, l'autre avec Python 2.6.2. Si le nombre de fichiers est inférieur à 6 ou 7, le fichier zip est créé sans aucun problème. Sinon, il échoue entre 7-15 fichiers et commence à écrire des fichiers inutiles à la fin du fichier. J'ai essayé de changer:

zfh.write(zip_file_name) 

à:

zfh.write(zip_file_name, zip_file_name, zipfile.ZIP_DEFLATED) 

qui me permet parfois d'écrire deux autres fichiers mais ne parvient inévitablement aussi bien.

Qu'est-ce que je fais mal?

Répondre

9

Vous mettez le fichier zip dans le fichier zip:

zfh.write(zip_file_name) 

devrait être:

zfh.write(file) 
+0

Wow, je ne peux pas croire que je ne vois pas, merci! –

+1

C'est le genre d'erreur difficile à repérer sans une nouvelle paire d'yeux. – Tom

+0

J'ai eu le même problème, merci. – Steinin

Questions connexes