- À propos du renommage et du déplacement avec pathlib
- Renommer un fichier avec Path.rename()
- Renommer un fichier en conservant son extension
- Déplacer un fichier avec Path.rename()
- Renommer et déplacer un fichier simultanément
- Utiliser Path.replace()
- Vérifier les chemins avant le déplacement
- Renommer plusieurs fichiers
- Gérer les erreurs de renommage et de déplacement
- A retenir !
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.
1 2 3 4 | from pathlib import Path fichier = Path("cours.txt") print(fichier) |
Sortie :
1 | cours.txt |
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.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("cours.txt") nouveau = fichier.rename("cours_python.txt") print("Nouveau chemin :", nouveau) |
Sortie :
1 | Nouveau chemin : cours_python.txt |
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.
1 2 3 4 5 6 7 | from pathlib import Path fichier = Path("documents/cours.pdf") nouveau_nom = "formation_python" + fichier.suffix nouveau = fichier.rename(fichier.with_name(nouveau_nom)) print("Nouveau chemin :", nouveau) |
Sortie :
1 | Nouveau chemin : documents/formation_python.pdf |
Si le nouveau nom complet est déjà connu, with_name() permet de construire directement le nouveau chemin dans le même dossier.
1 2 3 4 5 6 | from pathlib import Path fichier = Path("documents/notes.txt") nouveau = fichier.rename(fichier.with_name("notes_python.txt")) print(nouveau) |
Sortie :
1 | documents/notes_python.txt |
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.
1 2 3 4 5 6 7 | from pathlib import Path source = Path("documents/cours.txt") destination = Path("archives/cours.txt") source.rename(destination) print("Fichier déplacé vers :", destination) |
Sortie :
1 | Fichier déplacé vers : archives/cours.txt |
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.
1 2 3 4 5 6 7 8 9 10 | from pathlib import Path source = Path("cours.txt") dossier = Path("archives") dossier.mkdir(parents=True, exist_ok=True) destination = dossier / source.name source.rename(destination) print("Fichier déplacé vers :", destination) |
Sortie :
1 | Fichier déplacé vers : archives/cours.txt |
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.
1 2 3 4 5 6 7 | from pathlib import Path source = Path("documents/cours.txt") destination = Path("archives/ancien_cours.txt") source.rename(destination) print("Nouveau chemin :", destination) |
Sortie :
1 | Nouveau chemin : archives/ancien_cours.txt |
Nous pouvons également construire le chemin de destination avec l'opérateur / de pathlib.
1 2 3 4 5 6 7 8 | from pathlib import Path source = Path("documents/rapport.pdf") dossier = Path("archives") destination = dossier / "rapport_2026.pdf" source.rename(destination) print(destination) |
Sortie :
1 | archives/rapport_2026.pdf |
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é.
1 2 3 4 5 6 7 | from pathlib import Path source = Path("nouveau.txt") destination = Path("archives/cours.txt") nouveau_chemin = source.replace(destination) print("Nouveau chemin :", nouveau_chemin) |
Sortie :
1 | Nouveau chemin : archives/cours.txt |
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.
1 2 3 4 5 6 7 8 9 10 11 12 | from pathlib import Path source = Path("cours.txt") destination = Path("cours_python.txt") if not source.is_file(): print("Le fichier source n'existe pas.") elif destination.exists(): print("La destination existe déjà.") else: source.rename(destination) print("Fichier renommé avec succès.") |
Sortie possible :
1 | Fichier renommé avec succès. |
Lors d'un déplacement vers un autre dossier, nous pouvons également créer automatiquement le dossier de destination avant l'opération.
1 2 3 4 5 6 7 8 9 10 11 12 13 | from pathlib import Path source = Path("cours.txt") dossier = Path("archives") destination = dossier / source.name dossier.mkdir(parents=True, exist_ok=True) if source.is_file() and not destination.exists(): source.rename(destination) print("Déplacement terminé.") else: print("Déplacement impossible.") |
Sortie possible :
1 | Déplacement terminé. |
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.
1 2 3 4 5 6 7 8 | from pathlib import Path dossier = Path("images") for fichier in dossier.glob("*.jpg"): nouveau = fichier.with_name("photo_" + fichier.name) fichier.rename(nouveau) print(fichier.name, "->", nouveau.name) |
Sortie possible :
1 2 3 | chat.jpg -> photo_chat.jpg chien.jpg -> photo_chien.jpg maison.jpg -> photo_maison.jpg |
Nous pouvons également utiliser stem et suffix pour construire le nouveau nom. Le programme suivant ajoute _2026 avant l'extension de chaque fichier PDF.
1 2 3 4 5 6 7 8 9 | from pathlib import Path dossier = Path("documents") for fichier in dossier.glob("*.pdf"): nouveau_nom = fichier.stem + "_2026" + fichier.suffix nouveau = fichier.with_name(nouveau_nom) fichier.rename(nouveau) print(nouveau.name) |
Sortie possible :
1 2 3 | cours_2026.pdf exercices_2026.pdf rapport_2026.pdf |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from pathlib import Path source = Path("cours.txt") destination = Path("archives/cours.txt") try: source.rename(destination) print("Opération réussie.") except FileNotFoundError: print("Le fichier source ou le dossier de destination est introuvable.") except PermissionError: print("Permission refusée.") except OSError as erreur: print("Erreur système :", erreur) |
Sortie possible :
1 | Opération réussie. |
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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from pathlib import Path source = Path("cours.txt") dossier = Path("archives") destination = dossier / source.name try: dossier.mkdir(parents=True, exist_ok=True) source.rename(destination) print("Fichier déplacé :", destination) except FileNotFoundError: print("Le fichier source est introuvable.") except PermissionError: print("Permission refusée.") except OSError as erreur: print("Erreur système :", erreur) |
Sortie possible :
1 | Fichier déplacé : archives/cours.txt |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 | from pathlib import Path source = Path("documents/cours.txt") dossier = Path("archives") destination = dossier / "cours_python.txt" dossier.mkdir(parents=True, exist_ok=True) if source.is_file() and not destination.exists(): nouveau = source.rename(destination) print("Nouveau chemin :", nouveau) else: print("Opération impossible.") |
Sortie possible :
1 | Nouveau chemin : archives/cours_python.txt |
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/


