2010-08-10 19 views
140

J'ai lu les docs des modules zipfile, mais je ne pouvais pas comprendre comment décompresser un fichier, seulement comment compresser un fichier. Comment puis-je décompresser tout le contenu d'un fichier zip dans le même répertoire?Dézipper les fichiers en python

Répondre

235
import zipfile 
zip_ref = zipfile.ZipFile(path_to_zip_file, 'r') 
zip_ref.extractall(directory_to_extract_to) 
zip_ref.close() 

C'est à peu près tout!

+5

et si le contenu de l'archive .zip est le même, dans toutes les archives .zip? comment renommer le contenu avant d'extraire? exemple: 1.zip 2.zip .. tous contiennent content.txt: tout extraire comme 1content.txt 2content.txt? – iratzhash

+1

@Rahul - et quelle bibliothèque puis-je 'importer' – 3kstc

+1

@ 3kstc' import zipfile' –

15

Utilisez la méthode extractall, si vous utilisez Python 2.6+

zip = ZipFile('file.zip') 
zip.extractall() 
+0

N'avez-vous pas à spécifier une destination (zip.extractall (destination))? – asonnenschein

+2

Pas si vous extrayez simplement dans le même répertoire que le fichier zip –

+3

@DanGayle cela semble extraire le fichier zip dans le répertoire de travail actuel, PAS l'emplacement du fichier zip –

106

Si vous utilisez Python 3.2 ou version ultérieure:

import zipfile 
with zipfile.ZipFile("file.zip","r") as zip_ref: 
    zip_ref.extractall("targetdir") 

Vous ne devez utiliser la fermeture ou essayer/attraper avec cela car il utilise le context manager construction

+10

ZipFile fonctionne également comme gestionnaire de contexte dans 2.7 ou plus tard: https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile – blueCat