Skip to main content

Opérations sur les fichiers Zip

Zip File Operations in Python

Les fichiers Zip sont un moyen populaire de compresser et regrouper plusieurs fichiers dans une seule archive. Ils sont couramment utilisés pour des tâches telles que la compression de fichiers, la sauvegarde de données et la distribution de fichiers. Zipper ou compresser des fichiers en Python est une manière utile d'économiser de l'espace sur votre disque dur et de faciliter le transfert de fichiers sur internet.

Comment zipper un fichier en Python

Le module zipfile en Python fournit des fonctionnalités pour créer, lire, écrire, ajouter et extraire des fichiers ZIP.

Zipper un fichier unique

Vous pouvez utiliser le module zipfile pour créer un fichier zip contenant un seul fichier. Voici comment vous pouvez le faire :

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# name of the source file
file_name = 'file_to_compress.txt'

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add the source file to the zip file
zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

Dans le code ci-dessus, nous avons d'abord importé le module zipfile. Ensuite, nous avons défini le nom du fichier zip et le nom du fichier source. Nous avons créé un objet ZipFile et ajouté le fichier source à celui-ci en utilisant la méthode write(). Nous avons ensuite fermé le fichier zip en utilisant la méthode close().

Zipper plusieurs fichiers

Vous pouvez également créer un fichier zip contenant plusieurs fichiers. Voici un exemple :

import zipfile

# name of the new Zip file
zip_file_name = 'new_zip_file.zip'

# names of the source files
file_names = ['file_to_compressed1.txt',
              'file_to_compressed2.txt',
              'file_to_compressed3.txt'
             ]

# Create a ZipFile Object
zip_object = zipfile.ZipFile(zip_file_name, 'w')

# Add multiple files to the zip file
for file_name in file_names:
    zip_object.write(file_name, compress_type=zipfile.ZIP_DEFLATED)

# Close the Zip File
zip_object.close()

Dans l'exemple ci-dessus, nous avons défini les noms de plusieurs fichiers sources dans une liste. Nous avons ensuite ajouté chacun de ces fichiers au fichier zip en utilisant une boucle for et la méthode write(). Finalement, nous avons fermé le fichier zip en utilisant la méthode close().

Pour compresser encore plus le fichier zip, vous pouvez définir l'argument compress_type sur zipfile.ZIP_DEFLATED. Cela applique la méthode de compression DEFLATE aux fichiers en cours de zippage.

Dézipper un fichier en Python

Il est simple d'extraire des fichiers zip en Python en utilisant le module zipfile. Voici deux façons de le faire :

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    zip_ref.extractall('destination_folder')

Dans cet exemple, nous importons d'abord le module zipfile. Nous créons ensuite une instance de la classe ZipFile pour le fichier zip que nous souhaitons extraire. L'argument r indique que nous voulons lire à partir du fichier zip, et myzipfile.zip est le nom du fichier que nous voulons extraire.

La méthode extractall() extrait tous les fichiers du fichier zip et les sauvegarde dans le destination_folder spécifié. Si destination_folder n'existe pas, il sera créé.

import zipfile

with zipfile.ZipFile('myzipfile.zip', 'r') as zip_ref:
    for file in zip_ref.namelist():
        if file.endswith('.txt'):
            zip_ref.extract(file, 'destination_folder')

Dans cet exemple, nous importons à nouveau le module zipfile et créons une instance de la classe ZipFile. Nous parcourons ensuite tous les fichiers dans le fichier zip en utilisant namelist(). Si un fichier a une extension .txt, nous l'extrayons vers destination_folder.

En utilisant ces deux exemples de code, vous pouvez facilement extraire des fichiers de fichiers zip en Python. N'oubliez pas d'ajuster les chemins de fichiers et le nommage pour répondre à vos besoins spécifiques.

Contribuez avec nous!

N'hésitez pas à contribuer aux tutoriels Python sur GitHub : créez un fork, mettez à jour le contenu et émettez une pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Mise à jour : 03/05/2024 - 22:51
Profile picture for user angarsky
Examiné et approuvé