Résolue

Suppression de toute la racine

# Résolution d'erreurs # Fichiers

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 :)

Petite erreur dans le copié colle, mon if est bien en deux lignes avec tabulation.

Thibault houdon

Mentor

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) :
Coloration syntaxique et mise en forme

Oui c'est plus clair, merci beaucoup !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.