Je dois télécharger une archive zip de fichiers texte, envoyer chaque fichier texte de l'archive à d'autres gestionnaires pour traitement, et enfin écrire le fichier texte décompressé sur le disque.Lire le même fichier plusieurs fois en Python
J'ai le code suivant. Il utilise plusieurs ouvrir/fermer sur le même fichier, ce qui ne semble pas élégant. Comment puis-je le rendre plus élégant et efficace?
zipped = urllib.urlopen('www.abc.com/xyz.zip')
buf = cStringIO.StringIO(zipped.read())
zipped.close()
unzipped = zipfile.ZipFile(buf, 'r')
for f_info in unzipped.infolist():
logfile = unzipped.open(f_info)
handler1(logfile)
logfile.close() ## Cannot seek(0). The file like obj does not support seek()
logfile = unzipped.open(f_info)
handler2(logfile)
logfile.close()
unzipped.extract(f_info)
Pour clarifier les choses, le problème provient de l'absence d'un 'seek (0)' sur l'objet retourné par zipfile.open(), non? Vous voulez éviter plusieurs ouvertures sur le fichier zip? – rossipedia
Bryan, vous avez la bonne idée. – hli