Renommer un fichier à la main, c’est rapide. En renommer 500 à la main, c’est l’enfer. Python règle ça en quelques lignes, sans quitter son éditeur.
Pourquoi renommer un fichier avec Python ?
Automatiser le renommage, c’est utile dès qu’on sort du cas ponctuel : organiser des exports CSV, horodater des logs, préparer des images pour un pipeline de données. Le module os est natif — aucune installation requise. Trois lignes de code suffisent pour couvrir 90 % des cas courants.
os.rename() : la méthode classique

C’est la solution la plus répandue. Elle fait partie du module standard os, disponible sur tous les systèmes.
import os
os.rename("rapport.txt", "rapport_2024.txt")
os.rename() prend deux arguments obligatoires :
src: le chemin du fichier à renommer (relatif ou absolu)dst: le nouveau chemin (ou nom) cible
La fonction ne retourne rien. Si la destination existe déjà, Python lève une FileExistsError sur Windows (sur Linux, il écrase silencieusement).
Syntaxe et paramètres
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
Les deux paramètres src_dir_fd et dst_dir_fd sont rarement utiles en pratique — ils servent à pointer vers un descripteur de répertoire. Pour la grande majorité des usages, on passe uniquement src et dst.
Préférer les chemins absolus évite les erreurs liées au répertoire courant d’exécution, surtout dans les scripts lancés depuis un IDE ou un scheduler.
Gérer les erreurs avec try/except
Un fichier absent, un nom déjà pris, un dossier sans permission d’écriture — autant de cas qui font planter un script sans prévenir. Mieux vaut les attraper proprement :
import os
try:
os.rename("ancien_nom.txt", "nouveau_nom.txt")
print("Fichier renommé avec succès.")
except FileNotFoundError:
print("Erreur : fichier source introuvable.")
except FileExistsError:
print("Erreur : un fichier avec ce nom existe déjà.")
except PermissionError:
print("Erreur : permissions insuffisantes.")
except OSError as e:
print(f"Erreur système : {e}")
Les exceptions à connaître :
FileNotFoundError: le fichier source n’existe pasFileExistsError: le nom cible est déjà pris (Windows)PermissionError: droits d’écriture manquants sur le dossierIsADirectoryError: conflit entre un fichier et un dossier du même nom
pathlib.Path.rename() : l’approche moderne

Disponible depuis Python 3.4, pathlib offre une syntaxe orientée objet plus lisible. C’est l’approche recommandée dans le code Python contemporain.
from pathlib import Path
Path("rapport.txt").rename("rapport_2024.txt")
Contrairement à os.rename(), la méthode retourne un objet Path pointant vers le fichier renommé — pratique pour chaîner des opérations. Pour écraser un fichier existant sans exception, Path.replace() fait le travail :
Path("ancien.txt").replace("nouveau.txt") # écrase si 'nouveau.txt' existe déjà
Renommer plusieurs fichiers d’un coup
La vraie puissance de Python se voit quand on traite un dossier entier. Avec os.listdir() et une boucle, chaque fichier passe à la caisse. Pour les cas non-scriptés, des outils graphiques comme TheRenamer permettent de renommer des fichiers en masse sans écrire une seule ligne de code.
import os
dossier = "/home/user/exports/"
for i, nom in enumerate(os.listdir(dossier), start=1):
ancien = os.path.join(dossier, nom)
nouveau = os.path.join(dossier, f"export_{i:03d}.csv")
os.rename(ancien, nouveau)
Pour cibler uniquement certains fichiers (par extension, par préfixe), le module glob filtre par motif :
import glob, os
for fichier in glob.glob("/home/user/exports/*.txt"):
nouveau = fichier.replace(".txt", "_archive.txt")
os.rename(fichier, nouveau)
Cas d’usage fréquents pour le renommage en masse :
- Ajouter une date ou un numéro séquentiel à des logs
- Changer l’extension de tous les fichiers d’un dossier
- Préfixer des images avant un import dans un CMS
- Nettoyer des noms de fichiers avec des espaces ou des caractères spéciaux






