logo oujood
🔍

Supprimer et renommer des fichiers en Python

Python propose deux approches pour gérer les fichiers : le module os (classique) et pathlib (moderne). Ce cours couvre les deux avec des exemples concrets.

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.

  📋 Copier le code

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+).

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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.

  📋 Copier le code

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 fichieros.remove()p.unlink()
Renommer / déplacer un fichieros.rename()p.rename()shutil.move()
Supprimer un dossier videos.rmdir()p.rmdir()
Supprimer un dossier pleinshutil.rmtree()
Déplacer un dossier entiershutil.move()

Par carabde | Mis à jour le 21 avril 2026