Comment extraire un fichier zip en Python
Dans ce tutoriel, nous allons voire différentes manières pour décompresser ou d’extraire un ou plusieurs fichiers d’un zip dans un répertoire donnée.
Dans le module zipfile de Python, la classe ZipFile fournit la fonction membre ZipFile.extractall()
permettant d’extraire tout le contenu d’un fichier ZIP.
Extraire tous les fichiers d’un zip dans le répertoire courant
Pour travailler sur des fichiers zip utilisant python, nous allons utiliser un module python intégré appelé « zipfile » qui dispose de la méthode « extractall() » pour extraire tous les fichiers et dossiers d’un fichier zip dans le répertoire courant. Voici le code que vous pouvez utiliser pour extraire des fichiers:
from zipfile import ZipFile # spécifiant le nom du fichier zip file = "archive.zip" # ouvrir le fichier zip en mode lecture with ZipFile(file, 'r') as zip: # afficher tout le contenu du fichier zip zip.printdir() # extraire tous les fichiers print('extraction...') zip.extractall() print('Terminé!')
Le programme ci-dessus extrait le fichier zip nommé « archive.zip » dans le même répertoire de ce script.
Extraire tous les fichiers d’un zip dans un autre répertoire
Nous pouvons également passer un nom de répertoire à extractall() pour extraire tous les fichiers et dossiers vers un répertoire spécifique. Si le dossier que vous avez passé en paramètre n’existe pas, cette méthode en créera un pour vous. Voici le code que vous pouvez utiliser pour extraire des fichiers:
from zipfile import ZipFile # spécifiant le nom du fichier zip file = "archive.zip" # ouvrir le fichier zip en mode lecture with ZipFile(file, 'r') as zip: # extraire tous les fichiers vers un autre répertoire zip.extractall('zip_destination')
Le code ci-dessus va extraire tous les fichiers contenus dans « archive.zip » dans le dossier « zip_destination »
Extraire un seul fichier zip
Ceci est similaire à l’extraction de plusieurs fichiers. la différence est que cette fois, vous devez d’abord fournir le nom de fichier et le path. En plus, vous devez utiliser la méthode « extract() » à la place de « extractall() ». Voici un extrait de code de base pour extraire un seul fichier.
import zipfile zip = zipfile.ZipFile('C:\\User\\wtlx\\archive.zip') zip.extract('logo.jpg', 'C:\\User\\wtlx') zip.close()