Renommer et déplacer des fichiers avec pathlib en Python

1. À propos du renommage et du déplacement avec pathlib

Le module pathlib permet de manipuler les chemins, les fichiers et les dossiers avec une approche orientée objet. La classe Path fournit notamment les méthodes rename() et replace() pour renommer ou déplacer des fichiers.

Le principe est simple : si le nouveau chemin se trouve dans le même dossier, l'opération correspond généralement à un renommage. Si le nouveau chemin désigne un autre dossier, l'opération correspond à un déplacement.

Le programme suivant crée un objet Path représentant le fichier cours.txt.

Sortie :

2. Renommer un fichier avec Path.rename()

La méthode Path.rename() permet de renommer un fichier en indiquant son nouveau chemin. Lorsque l'ancien et le nouveau chemin appartiennent au même dossier, seul le nom du fichier est modifié.

Supposons que le fichier cours.txt existe dans le dossier courant. Le programme suivant le renomme en cours_python.txt. La méthode rename() retourne un objet Path correspondant au nouveau chemin.

Sortie :

Après cette opération, le fichier cours.txt n'existe plus sous son ancien nom : il porte désormais le nom cours_python.txt.

3. Renommer un fichier en conservant son extension

Lorsque nous souhaitons modifier uniquement le nom d'un fichier tout en conservant son extension, nous pouvons utiliser les propriétés stem et suffix ou la méthode with_name().

Dans l'exemple suivant, la propriété suffix permet de récupérer l'extension .pdf afin de construire le nouveau nom.

Sortie :

Si le nouveau nom complet est déjà connu, with_name() permet de construire directement le nouveau chemin dans le même dossier.

Sortie :

4. Déplacer un fichier avec Path.rename()

La méthode rename() peut également être utilisée pour déplacer un fichier. Il suffit d'indiquer comme destination un chemin situé dans un autre dossier.

Supposons que le fichier cours.txt se trouve dans le dossier documents et que le dossier archives existe déjà. Le programme suivant déplace le fichier vers ce dernier.

Sortie :

Le fichier conserve ici le même nom, mais son emplacement change de documents vers archives.

Le dossier de destination doit exister avant le déplacement. Nous pouvons le créer avec mkdir() si nécessaire.

Sortie :

5. Renommer et déplacer un fichier simultanément

Avec Path.rename(), le chemin de destination peut contenir à la fois un nouveau dossier et un nouveau nom. Nous pouvons donc déplacer et renommer un fichier en une seule opération.

Le programme suivant déplace documents/cours.txt dans le dossier archives tout en le renommant en ancien_cours.txt.

Sortie :

Nous pouvons également construire le chemin de destination avec l'opérateur / de pathlib.

Sortie :

6. Utiliser Path.replace()

La méthode Path.replace() permet également de renommer ou de déplacer un fichier. Sa différence importante avec rename() concerne principalement le comportement lorsque la destination existe déjà : replace() est explicitement destinée à remplacer la destination existante lorsqu'il s'agit d'un fichier ou d'un lien remplaçable.

Le programme suivant déplace nouveau.txt vers archives/cours.txt. Si la destination peut être remplacée, son ancien contenu est remplacé.

Sortie :

Il faut utiliser replace() avec prudence lorsqu'un fichier de destination contient des données importantes, car cette opération peut le remplacer.

7. Vérifier les chemins avant le déplacement

Avant de renommer ou de déplacer un fichier, il peut être utile de vérifier que le fichier source existe avec is_file() et que la destination n'existe pas avec exists().

Le programme suivant effectue ces vérifications avant de renommer le fichier.

Sortie possible :

Lors d'un déplacement vers un autre dossier, nous pouvons également créer automatiquement le dossier de destination avant l'opération.

Sortie possible :

8. Renommer plusieurs fichiers

La méthode rename() peut être associée à iterdir() ou glob() afin de renommer automatiquement plusieurs fichiers. Cette technique est utile pour ajouter un préfixe ou modifier systématiquement les noms d'un ensemble de fichiers.

Supposons que le dossier images contienne plusieurs fichiers JPG. Le programme suivant ajoute le préfixe photo_ à leur nom.

Sortie possible :

Nous pouvons également utiliser stem et suffix pour construire le nouveau nom. Le programme suivant ajoute _2026 avant l'extension de chaque fichier PDF.

Sortie possible :

9. Gérer les erreurs de renommage et de déplacement

Une opération de renommage ou de déplacement peut échouer pour plusieurs raisons : le fichier source n'existe pas, le dossier de destination est absent, les permissions sont insuffisantes ou une autre contrainte du système de fichiers empêche l'opération. Une structure try...except permet de gérer ces situations.

Le programme suivant intercepte notamment FileNotFoundError et PermissionError.

Sortie possible :

Pour éviter l'erreur liée à un dossier de destination absent, nous pouvons le créer avant le déplacement avec mkdir(parents=True, exist_ok=True).

Sortie possible :

10. A retenir !

La classe Path du module pathlib permet de renommer et de déplacer facilement des fichiers en Python.

  • rename() permet de renommer un fichier.
  • rename() peut également déplacer un fichier vers un autre dossier lorsque le système de fichiers autorise l'opération.
  • Un nouveau chemin contenant un autre nom permet de déplacer et renommer simultanément le fichier.
  • replace() permet de remplacer explicitement une destination existante lorsque cette opération est autorisée.
  • with_name() construit un nouveau chemin avec un autre nom.
  • name permet de récupérer le nom complet du fichier.
  • stem permet de récupérer le nom sans son dernier suffixe.
  • suffix permet de récupérer le dernier suffixe du fichier.
  • exists() et is_file() permettent de vérifier les chemins avant l'opération.
  • try...except permet de gérer les erreurs de renommage et de déplacement.

Le programme suivant résume une opération courante : vérifier le fichier source, créer le dossier de destination puis déplacer et renommer le fichier.

Sortie possible :

 


 


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 *