Extraire le fichier zip contenu de répertoire spécifique dans Python 2.7
C'est le code que j'utilise actuellement pour extraire un fichier zip qui vit dans le même répertoire de travail courant que le script. Comment puis-je spécifier un autre répertoire pour l'extraire?
Le code que j'ai essayé n'est pas en l'extrayant où je veux.
import zipfile
fh = open('test.zip', 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
outfile = open(name, 'wb')
outfile.write('C:\\'+z.read(name))
outfile.close()
fh.close()
- Si vous déplacez le 'C:\\" + à l'appel d'offres ouvert, au lieu de l'appel d'écriture?
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez juste un problème ici. Devrait probablement être quelque chose comme ce qui suit:
et si vous voulez juste pour en extraire tous les fichiers:
__exit__
donc je ne sais pas comment votre avec instruction de travail.ZipFile
exemple, il a un__exit__
méthode. J'ai juste donné l'exemple, essayez un autre (python 2.7) et il fonctionne comme à l'écrit.J'ai essayé les autres réponses dans ce thread, mais au final, pour moi, la solution était simple:
Regarder extractall, mais l'utiliser uniquement avec confiance les fichiers zip.
zfile.close()
, aussi, comme il est dit dans ZipFile.fermer qui Vous devez appeler close() avant de quitter votre programme ou des dossiers essentiels ne seront pas écrites..Ajoutant à secretmike la réponse ci-dessus, avec le soutien de python 2.6 pour l'extraction de tous les fichiers.
Si vous souhaitez extraire un fichier zip à partir de la ligne de commande à l'aide de Python (dire parce que vous n'avez pas le décompresser commande), vous pouvez appeler le zipfile module directement
Prendre un coup d'oeil à la docs. Il prend également en charge la compression et à lister le contenu.
Pierre de Rivaz a un point dans le commentaire ci-dessus. Vous allez vouloir avoir le répertoire dans l'appel à open().
Vous allez vouloir faire quelque chose comme ceci:
J'ai modifié le code pour demander à l'utilisateur entrée la nom de fichier et son chemin d'accès où il a besoin d'être extraites et afin que l'utilisateur ai plus de contrôle sur l'endroit où placer le dossier extrait et ce nom doit être attribué au dossier extrait.