Comment décompresser un fichier avec Python 2.4?
Je vais avoir un moment difficile de déterminer comment décompresser un fichier zip avec 2.4. extract()
n'est pas inclus dans 2.4. Je suis limité à l'aide 2.4.4 sur mon serveur.
Quelqu'un peut-veuillez fournir un exemple de code simple?
- vous pouvez utiliser "`" backtick opérateur ou d'une autre façon d'exécuter la fonction du système et décompressez votre fichier
- que voulez-vous faire avec un backtick? o.O
- Si vous avez trouvé à cette question, mais utilisez une version plus récente de python ce faire: zfile = zipfile.ZipFile(file_to_extract) zfile.extractall(target_dir)
- Vous pouvez passer de l'zFile variable et juste
zipfile.ZipFile(file_to_extract).extractall(target_dir)
- ce qui souffre du même problème que votre code n'a, cependant, qui est que vous n'avez pasclose()
laZipFile
par la suite ce qui peut conduire à des OS de problèmes (c'est à dire, vous ne serez pas en mesure de supprimer le fichier, car il va apparaître comme par Python.)
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
namelist()
etextract()
. L'échantillon compte tenu des répertoiresname
est un répertoire (pas un fichier régulier)? Je suis tombé sur ce cas.Il y a un problème avec Vinko de réponse (au moins quand je le lance). J'ai eu:
Voici comment le résoudre:
fd = open(name, 'wb')
dans le cas où certaines des fichiers zippés sont des images ou sinon les fichiers binaires?Modifiant Ovilia réponse de sorte que vous pouvez spécifier le répertoire de destination ainsi:
Pas entièrement testé, mais ça devrait être bon:
Je suis en train de tester en Python 2.7.3rc2 et le
ZipFile.namelist()
n'est pas le retour d'une entrée avec juste le sous nom de répertoire pour créer un sous-répertoire, mais seulement une liste de noms de fichiers avec sous-répertoire, comme suit:Donc le vérifier
ne pas évaluer à
True
à tous.J'ai donc modifié le code pour vérifier si le
dirName
existe à l'intérieur dedestDir
et de créerdirName
si elle n'existe pas. Le fichier est extrait seulement sifileName
partie n'est pas vide. Donc, cela devrait prendre soin de la condition où un nom de répertoire peuvent apparaître dansZipFile.namelist()