Le module shutil en Python

manipuler des fichiers avec le module shutil python

Le module shutil fait partie de la bibliothèque standard de Python. Il fournit des fonctions permettant de copier, déplacer, supprimer et archiver facilement des fichiers et des dossiers.

 

1. À propos du module shutil

Le module shutil, dont le nom vient de shell utilities, propose des opérations de haut niveau pour manipuler les fichiers et les dossiers.

Il permet notamment de copier des fichiers, copier des dossiers complets, déplacer ou renommer des fichiers, supprimer des dossiers, créer des archives ZIP, extraire des archives et obtenir des informations sur l'espace disque.

shutil appartient à la bibliothèque standard de Python. Il n'est donc pas nécessaire de l'installer avec pip.

 

2. Importer le module shutil

Pour utiliser les fonctions du module shutil, il suffit de l'importer avec l'instruction import.

Sortie :

 

3. Copier un fichier avec shutil.copy()

La fonction shutil.copy() permet de copier un fichier vers un autre emplacement. Le premier argument représente le fichier source et le second représente la destination.

Sortie :

Le fichier document.txt est copié dans un nouveau fichier nommé copie.txt.

 

4. Copier un fichier dans un dossier

La destination de shutil.copy() peut être un dossier existant. Dans ce cas, le fichier conserve automatiquement son nom d'origine.

Sortie :

Si le dossier sauvegarde existe, le fichier sera copié à l'intérieur sous le nom document.txt.

 

5. Copier un fichier avec shutil.copy2()

La fonction shutil.copy2() fonctionne comme copy(), mais essaie également de conserver certaines métadonnées du fichier, notamment les dates de modification et d'accès.

Sortie :

copy2() est particulièrement utile pour réaliser des opérations de sauvegarde.

 

6. Copier le contenu d'un fichier avec copyfile()

La fonction shutil.copyfile() permet de copier le contenu d'un fichier vers un autre fichier. La destination doit représenter un fichier et non simplement un dossier.

Sortie :

Après l'exécution, destination.txt contient les mêmes données que source.txt.

 

7. Copier un dossier complet avec copytree()

Pour copier un dossier avec l'ensemble de ses fichiers et sous-dossiers, nous utilisons la fonction shutil.copytree().

Sortie :

Python crée le dossier copie_dossier et y copie récursivement tout le contenu de mon_dossier.

 

8. Copier dans un dossier qui existe déjà

Le paramètre dirs_exist_ok=True permet à copytree() de copier les fichiers lorsque le dossier de destination existe déjà.

Sortie :

Cette possibilité est particulièrement pratique pour mettre à jour un dossier de sauvegarde existant.

 

9. Déplacer un fichier avec shutil.move()

La fonction shutil.move() permet de déplacer un fichier d'un emplacement vers un autre.

Sortie :

Le fichier document.txt est retiré de son emplacement initial puis placé dans le dossier documents.

 

10. Renommer un fichier avec shutil.move()

La fonction shutil.move() peut également servir à renommer un fichier en indiquant un nouveau nom comme destination.

Sortie :

Le fichier ancien.txt porte maintenant le nom nouveau.txt.

 

11. Déplacer un dossier

shutil.move() fonctionne également avec les dossiers. Il est ainsi possible de déplacer un dossier complet et tout son contenu.

Sortie :

Le dossier photos et son contenu sont déplacés vers le dossier sauvegarde.

 

12. Supprimer un dossier avec shutil.rmtree()

La fonction shutil.rmtree() permet de supprimer un dossier ainsi que tous les fichiers et sous-dossiers qu'il contient.

Sortie :

Cette fonction doit être utilisée avec prudence. rmtree() supprime récursivement le contenu du dossier et ne l'envoie généralement pas dans la corbeille.

 

13. Vérifier l'existence d'un dossier avant de le supprimer

Avant d'utiliser shutil.rmtree(), il est souvent préférable de vérifier que le dossier existe. Nous pouvons utiliser pour cela la fonction os.path.exists().

Sortie possible :

Cette vérification évite notamment de tenter de supprimer un dossier qui n'existe pas.

 

14. Créer une archive ZIP

La fonction shutil.make_archive() permet de créer facilement une archive à partir d'un dossier. Pour obtenir une archive ZIP, nous indiquons "zip" comme format.

Sortie :

Cette commande crée le fichier sauvegarde.zip contenant les éléments du dossier mon_dossier.

 

15. Extraire une archive

La fonction shutil.unpack_archive() permet d'extraire le contenu d'une archive dans un dossier donné.

Sortie :

Le contenu de sauvegarde.zip est extrait dans le dossier fichiers_extraits.

 

16. Connaître les formats d'archives disponibles

La fonction shutil.get_archive_formats() permet d'obtenir la liste des formats disponibles pour la création d'archives.

Sortie possible :

Les formats réellement disponibles peuvent varier selon la version de Python et l'environnement utilisé.

 

17. Connaître l'espace disponible sur un disque

La fonction shutil.disk_usage() retourne trois informations : l'espace total, l'espace utilisé et l'espace libre.

Sortie possible :

Les valeurs retournées par disk_usage() sont exprimées en octets.

 

18. Afficher l'espace disque en Go

Pour rendre les informations plus lisibles, nous pouvons convertir les octets en gigaoctets en divisant les valeurs par 1024**3.

Sortie possible :

Les valeurs obtenues dépendent naturellement du disque utilisé sur l'ordinateur.

 

19. Rechercher un programme avec shutil.which()

La fonction shutil.which() recherche l'emplacement d'un programme exécutable accessible notamment à travers la variable d'environnement PATH.

Sortie possible sous Windows :

Le chemin dépend de l'installation de Python. Si le programme n'est pas trouvé, which() retourne None.

 

20. Ignorer certains fichiers pendant une copie

La fonction shutil.ignore_patterns() peut être utilisée avec copytree() pour exclure certains fichiers ou dossiers pendant une copie.

Sortie :

Les fichiers ayant les extensions .tmp et .log ne seront pas copiés dans le nouveau dossier.

 

21. Créer une sauvegarde ZIP d'un projet

Une utilisation courante de shutil consiste à créer automatiquement une sauvegarde compressée d'un projet. Nous pouvons réaliser cette opération avec make_archive().

Sortie :

Le dossier mon_projet est ainsi sauvegardé dans le fichier backup_mon_projet.zip.

 

22. Gérer les erreurs

Une opération sur un fichier peut échouer si le fichier n'existe pas ou si l'utilisateur ne possède pas les autorisations nécessaires. Nous pouvons utiliser try et except pour gérer ces situations.

Sortie possible :

La gestion des exceptions permet d'éviter l'arrêt brutal du programme lorsqu'une opération sur les fichiers échoue.

 

23. Principales fonctions du module shutil

Le module Python shutil est doté de nombreuses fonctions offrant à l'utilisateur une grande souplesse sur la manipulation des fichiers. Voici les principales foncnions publiques, regroupées par usage.

  1. shutil.copyfile(src, dst) : Copie le contenu du fichier source src vers le fichier de destination dst.
  2. shutil.copy(src, dst) : Copie un fichier vers une destination en conservant également ses permissions.
  3. shutil.copy2(src, dst) : Copie un fichier en essayant de conserver ses permissions et ses principales métadonnées.
  4. shutil.copyfileobj(fsrc, fdst) : Copie les données entre deux objets fichiers déjà ouverts en Python.
  5. shutil.copymode(src, dst) : Copie les permissions du fichier source vers le fichier de destination.
  6. shutil.copystat(src, dst) : Copie les principales métadonnées d'un fichier, comme les permissions et les dates.
  7. shutil.copytree(src, dst) : Copie récursivement un dossier complet avec ses fichiers et ses sous-dossiers.
  8. shutil.move(src, dst) : Déplace un fichier ou un dossier vers un autre emplacement et peut également servir à le renommer.
  9. shutil.rmtree(path) : Supprime récursivement un dossier ainsi que tous les fichiers et sous-dossiers qu'il contient.
  10. shutil.disk_usage(path) : Retourne l'espace disque total, l'espace utilisé et l'espace encore disponible.
  11. shutil.chown(path, user, group) : Modifie le propriétaire et/ou le groupe associé à un fichier ou à un dossier.
  12. shutil.which(cmd) : Recherche l'emplacement d'une commande ou d'un programme exécutable accessible depuis le système.
  13. shutil.make_archive() : Crée une archive à partir d'un dossier dans un format comme ZIP, TAR ou GZIP.
  14. shutil.unpack_archive() : Extrait automatiquement le contenu d'une archive vers le dossier de destination indiqué.
  15. shutil.get_archive_formats() : Retourne la liste des formats disponibles pour créer des archives avec shutil.
  16. shutil.get_unpack_formats() : Retourne la liste des formats d'archives que shutil est capable d'extraire.
  17. shutil.register_archive_format() : Enregistre un nouveau format personnalisé pouvant être utilisé pour créer des archives.
  18. shutil.unregister_archive_format() : Supprime un format de création d'archive précédemment enregistré.
  19. shutil.register_unpack_format() : Enregistre un nouveau format personnalisé permettant l'extraction d'archives.
  20. shutil.unregister_unpack_format() : Supprime un format d'extraction d'archive précédemment enregistré.
  21. shutil.ignore_patterns() : Définit des motifs de fichiers ou dossiers à ignorer lors d'une copie avec copytree().
  22. shutil.get_terminal_size() : Retourne la taille actuelle du terminal sous forme de nombre de colonnes et de lignes.

Voir Aussi:

 


Auteur : Younes Derfoufi
Lieu de travail
: CRMEF OUJDA
Site Web
: www.tresfacile.net
Chaine YouTube
: https://www.youtube.com/user/InformatiquesFacile
Me contacter
: https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *