2011-09-23 4 views
1
a.zip--- 
     -- b.txt 
     -- c.txt 
     -- d.txt 

Méthodes pour traiter les fichiers zip avec Python,Comment traiter fichier zip avec Python

Je pourrais étendre le fichier zip dans un répertoire temporaire, puis de traiter chaque fichier txt un bye un

ici , Je suis plus intéressé de savoir si Python fournit un tel moyen pour que Je n'ai pas à développer manuellement le fichier zip et simplement traiter le fichier zip comme un dossier spécialisé et traiter chaque txt en conséquence.

+0

Tous ces éléments sont des doublons: http://stackoverflow.com/search?q=python+zipfile –

+0

duplication possible de [Comment lire les fichiers sélectionnés à partir d'une archive Zip distante via HTTP à l'aide de Python?] (Http://stackoverflow.com/questions/94490/how-do-i-read-selected-files-from-a-remote-zip-archive-over-http-using-python) –

+1

Ou peut-être une copie de ceci: http://stackoverflow.com/questions/4890860/make-in-memory-copy-of-a-zip-by-iterrating-over-each-file-of-the-input –

Répondre

11

Le Python standard library vous aide.

blogs Doug Hellman très instructifs sur les modules sélectionnés: http://www.doughellmann.com/PyMOTW/zipfile/

Pour commenter après Davids: De Python 2.7 sur l'objet fichier Zip fournit un gestionnaire de contexte, de sorte que la méthode recommandée serait:

import zipfile 
with zipfile.ZipFile("zipfile.zip", "r") as f: 
    for name in f.namelist(): 
     data = f.read(name) 
     print name, len(data), repr(data[:10]) 

La méthode close sera appelée automatiquement en raison de l'instruction with. Ceci est particulièrement important si vous écrivez dans le fichier.

3

Oui, vous pouvez traiter chaque fichier séparément. Jetez un oeil au tutoriel here. Pour vos besoins, vous pouvez faire quelque chose comme cet exemple de ce tutoriel:

import zipfile 
file = zipfile.ZipFile("zipfile.zip", "r") 
for name in file.namelist(): 
    data = file.read(name) 
    print name, len(data), repr(data[:10]) 

Cela itérer sur chaque fichier dans l'archive et imprimer son nom, la longueur et les 10 premiers octets.

La documentation de référence complète est here.

+1

L'utilisation du fichier comme nom de variable est en conflit avec le fichier intégré type. – rocksportrocker

Questions connexes