J'ai lu la zipfile
documentation , mais je ne comprenais pas comment décompresser un fichier, seulement comment compresser un fichier. Comment décompresser tout le contenu d'un fichier zip dans le même répertoire?
J'ai lu la zipfile
documentation , mais je ne comprenais pas comment décompresser un fichier, seulement comment compresser un fichier. Comment décompresser tout le contenu d'un fichier zip dans le même répertoire?
Réponses:
import zipfile
with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
zip_ref.extractall(directory_to_extract_to)
C'est à peu près ça!
from zipfile import ZipFile
. Lorsque vous l'utilisez, vous n'avez plus besoin d'utiliser zipfile.ZipFile
et pouvez utiliser ZipFile(zip_file_name)
.
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 n'avez pas besoin d'utiliser close ou try / catch avec cela car il utilise la construction du gestionnaire de contexte .
zipfile
+ pathlib
= gagner. ça vous dérange si je mets légèrement à jour votre réponse?
Utilisez la extractall
méthode, si vous utilisez Python 2.6+
zip = ZipFile('file.zip')
zip.extractall()
Vous pouvez également importer uniquement ZipFile
:
from zipfile import ZipFile
zf = ZipFile('path_to_file/file.zip', 'r')
zf.extractall('path_to_extract_folder')
zf.close()
Fonctionne en Python 2 et Python 3 .
import zipfile.ZipFile
génère ModuleNotFoundError: No module named 'zipfile.ZipFile'; 'zipfile' is not a package
en 3.6.5. Je suis ouvert à ce que ce soit une erreur d'opérateur de ma part, mais je ne sais pas ce que c'est.
essaye ça :
import zipfile
def un_zipFiles(path):
files=os.listdir(path)
for file in files:
if file.endswith('.zip'):
filePath=path+'/'+file
zip_file = zipfile.ZipFile(filePath)
for names in zip_file.namelist():
zip_file.extract(names,path)
zip_file.close()
path: décompressez le chemin du fichier
import os
zip_file_path = "C:\AA\BB"
file_list = os.listdir(path)
abs_path = []
for a in file_list:
x = zip_file_path+'\\'+a
print x
abs_path.append(x)
for f in abs_path:
zip=zipfile.ZipFile(f)
zip.extractall(zip_file_path)
Cela ne contient pas de validation pour le fichier s'il n'est pas compressé. Si le dossier contient un fichier non .zip, il échouera.