Créer des archives ZIP en Python : du répertoire complet à la sélection personnalisée de fichiers
Créer des archives ZIP en Python : du répertoire complet à la sélection personnalisée de fichiers
Python rend simple la création d'archives ZIP et TAR, que vous ayez besoin de compresser un répertoire entier ou de sélectionner des fichiers spécifiques.
Utilisez shutil.make_archive pour un zip rapide de répertoire entier :
shutil.make_archive(nom_fichier_sortie, 'zip', nom_repertoire)
Pour un contrôle granulaire, la classe zipfile.ZipFile vous permet de spécifier des fichiers individuels :
ZipFile.write(nom_fichier)
Étape 1 : Préparer l'environnement
- Importer les modules requis :
from shutil import make_archive from zipfile import ZipFile from os import path import os
- S'assurer que le fichier source existe et obtenir son chemin absolu.
if path.exists("guru99.txt"): src = path.realpath("guru99.txt") - Optionnellement renommer un fichier existant pour correspondre au nom cible.
Étape 2 : Zipper le répertoire entier
Quand vous voulez archiver tout un dossier, utilisez make_archive :
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
Ceci crée guru99_archive.zip dans le répertoire de travail actuel.
Étape 3 : Ajouter des fichiers spécifiques à un nouveau ZIP
Si vous avez besoin d'un contrôle plus fin, la classe ZipFile est idéale :
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
L'instruction with ferme automatiquement l'archive à la fin du bloc.
Étape 4 : Vérifier le résultat
Ouvrez le fichier ZIP généré dans l'explorateur de fichiers de votre système d'exploitation pour voir le contenu. Sur Windows, un double-clic affichera la liste des fichiers inclus.
Voici des captures d'écran illustratives d'un flux de travail typique :







Code complet (Python 3) :
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# Obtenir le chemin absolu vers le fichier source
src = path.realpath("guru99.txt")
# Optionnel : renommer un fichier existant
os.rename("carriere.guru99.txt", "guru99.txt")
# Archiver le répertoire entier contenant le fichier
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
# Créer un second ZIP avec seulement les fichiers sélectionnés
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
Résumé
- Pour zipper un répertoire entier, appelez
shutil.make_archive('nom', 'zip', root_dir). - Pour ajouter des fichiers spécifiques, utilisez
ZipFile.write(nom_fichier)dans un blocwith.
Python
- Entrées/sorties de fichiers Python : maîtriser les opérations sur les fichiers
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Fonction Python round() expliquée avec exemples pratiques
- Maîtriser la fonction Python map() : syntaxe, exemples et bonnes pratiques
- Python timeit() : mesurer le temps d'exécution avec exemples pratiques
- Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
- Python list.count() : Guide Expert avec Exemples Pratiques
- Python list.index() : Comment Trouver les Positions d'Éléments avec Exemples Pratiques