OUJOOD.COM
Supprimer un fichier, renommer un dossier, déplacer des données d'un endroit à un autre : ces opérations semblent simples, mais elles méritent attention. Une suppression en Python est définitive — il n'y a pas de corbeille. Un renommage mal ciblé peut écraser un fichier existant sans avertissement.
Python offre deux modules pour ces tâches : os, présent depuis les premières versions, et pathlib, plus moderne et orienté objet. Pour les opérations complexes sur les dossiers (copier, déplacer, supprimer un dossier non vide), le module shutil complète les deux. Ce cours couvre les trois avec des exemples prêts à l'emploi.
Supprimer un fichier
Deux façons de supprimer un fichier : os.remove() avec le module os, ou Path.unlink() avec pathlib. Dans les deux cas, la suppression est immédiate et irréversible.
import os from pathlib import Path # Créer un fichier de test Path("test.txt").write_text("contenu", encoding="utf-8") # Méthode 1 : avec os.remove() os.remove("test.txt") print("Fichier supprimé avec os.remove()") # Recréer pour le deuxième exemple Path("test.txt").write_text("contenu", encoding="utf-8") # Méthode 2 : avec pathlib p = Path("test.txt") p.unlink() print("Fichier supprimé avec pathlib")
Si le fichier n'existe pas, les deux méthodes lèvent une erreur (FileNotFoundError). Pour éviter ça, vérifiez l'existence avant, ou utilisez missing_ok=True avec unlink() (Python 3.8+).
from pathlib import Path
p = Path("fichier_peut_etre_absent.txt")
# Option 1 : vérifier avant de supprimer
if p.exists():
p.unlink()
print("Supprimé.")
else:
print("Fichier déjà absent.")
# Option 2 : missing_ok=True (Python 3.8+)
p.unlink(missing_ok=True)
print("Suppression sans erreur même si absent.")
Renommer un fichier
os.rename() et Path.rename() renomment un fichier. Ces fonctions servent aussi à déplacer un fichier : il suffit de donner un chemin de destination dans un autre dossier.
import os from pathlib import Path # Créer un fichier de test Path("ancien.txt").write_text("contenu", encoding="utf-8") # Méthode 1 : avec os.rename() os.rename("ancien.txt", "nouveau.txt") print("Renommé avec os.rename()") # Méthode 2 : avec pathlib p = Path("nouveau.txt") p.rename("final.txt") print("Renommé avec pathlib") # Déplacer ET renommer en même temps Path("final.txt").rename("archives/final.txt") # Le dossier archives/ doit exister au préalable
Renommer plusieurs fichiers d'un dossier
Cas concret : renommer en lot tous les fichiers d'un dossier pour ajouter un préfixe ou changer leur extension.
from pathlib import Path
dossier = Path("images")
dossier.mkdir(exist_ok=True)
# Créer des fichiers de test
for i in range(1, 4):
(dossier / f"photo{i}.jpeg").write_text("img")
# Renommer tous les .jpeg en .jpg
for fichier in dossier.glob("*.jpeg"):
nouveau_nom = fichier.with_suffix(".jpg")
fichier.rename(nouveau_nom)
print(f"{fichier.name} → {nouveau_nom.name}")
# Résultat :
# photo1.jpeg → photo1.jpg
# photo2.jpeg → photo2.jpg
# photo3.jpeg → photo3.jpg
Supprimer un dossier vide
os.rmdir() et Path.rmdir() suppriment uniquement les dossiers vides. Si le dossier contient des fichiers, une erreur est levée.
import os from pathlib import Path # Créer un dossier vide Path("temp").mkdir(exist_ok=True) # Méthode 1 : os.rmdir() os.rmdir("temp") # Méthode 2 : pathlib Path("temp2").mkdir(exist_ok=True) Path("temp2").rmdir() print("Dossiers vides supprimés.")
Supprimer un dossier et tout son contenu
Pour supprimer un dossier qui contient des fichiers et des sous-dossiers, il faut shutil.rmtree(). Cette opération supprime tout de façon récursive et définitive — à utiliser avec précaution.
import shutil from pathlib import Path # Créer une arborescence de test base = Path("a_supprimer") (base / "sous_dossier").mkdir(parents=True, exist_ok=True) (base / "fichier.txt").write_text("test", encoding="utf-8") (base / "sous_dossier" / "autre.txt").write_text("test", encoding="utf-8") # Supprimer le dossier et tout son contenu shutil.rmtree(base) print("Dossier et contenu supprimés.") # Vérification print(base.exists()) # Résultat : False
Déplacer un fichier ou un dossier
shutil.move() déplace un fichier ou un dossier entier vers une nouvelle destination. Si la destination est un dossier existant, le fichier y est placé à l'intérieur. Si c'est un chemin complet, le fichier est renommé en cours de déplacement.
import shutil from pathlib import Path # Préparer les dossiers Path("source").mkdir(exist_ok=True) Path("destination").mkdir(exist_ok=True) Path("source/rapport.pdf").write_text("contenu", encoding="utf-8") # Déplacer un fichier dans un dossier shutil.move("source/rapport.pdf", "destination/") print("Fichier déplacé.") # Déplacer et renommer en même temps Path("source/notes.txt").write_text("notes", encoding="utf-8") shutil.move("source/notes.txt", "destination/notes_v2.txt") print("Fichier déplacé et renommé.")
Récapitulatif des fonctions
| Action | os | pathlib | shutil |
|---|---|---|---|
| Supprimer un fichier | os.remove() | p.unlink() | — |
| Renommer / déplacer un fichier | os.rename() | p.rename() | shutil.move() |
| Supprimer un dossier vide | os.rmdir() | p.rmdir() | — |
| Supprimer un dossier plein | — | — | shutil.rmtree() |
| Déplacer un dossier entier | — | — | shutil.move() |
Par carabde | Mis à jour le 21 avril 2026