Suppression de toute la racine
Bonjour ! J'ai fait ce code :
import os
chemin = "/Users/until/Downloads/pyth/tests"
dossier = os.path.join(chemin, "dossier")
os.makedirs(dossier, exist_ok= True)
if os.path.exists(dossier):
os.removedirs(dossier)
Cependant lorsque je l'exécute, il supprime le dossier, mais aussi tests et pyth. Je ne comprends pas pourquoi...
Merci de votre aide :)
Salut Corentin !
En fait la fonction os.removedirs() essaie de supprimer récursivement tous les répertoires parents vides, remontant ainsi la chaîne des répertoires jusqu'à ce qu'elle trouve un répertoire qui n'est pas vide ou jusqu'à ce qu'une erreur se produise. C'est pour ça qu'après avoir supprimé "dossier", elle essaie de supprimer "tests", "pyth" et ainsi de suite (et réussi à le faire tant qu'ils sont vides).
Si ton intention est de supprimer uniquement le répertoire "dossier" et rien d'autre, tu peux utiliser plutôt la fonction os.rmdir(), qui supprime le répertoire cible mais ne remonte pas les répertoires parents :
import os
chemin = "/Users/until/Downloads/pyth/tests"
dossier = os.path.join(chemin, "dossier")
os.makedirs(dossier, exist_ok=True)
if os.path.exists(dossier):
os.rmdir(dossier) # Utilise os.rmdir() au lieu de os.removedirs()
Avec os.rmdir(dossier), seul le répertoire "dossier" sera supprimé, et aucun des répertoires parents ne sera affecté. Assure-toi simplement que "dossier" est vide avant d'appeler os.rmdir(), car cette fonction ne peut supprimer que les répertoires vides. Si "dossier" peut contenir des fichiers ou sous-dossiers que tu souhaites également supprimer, tu devras d'abord les supprimer avant de pouvoir supprimer "dossier" lui-même :)
J'espère que c'est plus clair 😊
N.B : j'ai remis en forme ton code dans le message d'origine, tu peux utiliser le bouton rouge dans la barre d'outils en haut pour les rajouter (et tu peux spécifier après les premiers backtick le nom du langage pour avoir la coloration syntaxique) :

Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte