def rmdir(path: str | bytes | os.PathLike, *, dir_fd: int = None) -> None
rmdir
= ReMove DIRectory).
rmdir
produira une erreur. Pour supprimer un dossier contenant des éléments (fichiers ou sous-dossiers), vous pouvez utiliser la fonction
shutil.rmtree
.
Deux possibilités vous sont proposées pour indiquer le dossier à supprimer :
rmdir("./folder")
dir_fd
(depuis la version 3.3 de Python).
fd = os.open("./parentFolder", os.O_RDONLY) rmdir("folder", dir_fd=fd)
*
situé dans la déclaration des paramètres de la fonction rm_dir
permet d'indiquer la fin des paramètres positionnels
et le début des paramètres nommés.
dir_fd
, est pleinement pris en charge depuis la version 3.3 de Python.
De plus, la notion de descripteur, emblème d'un système d'exploitation Unix/Linux, n'est pas forcément supportée sur tous les autres systèmes.
Le set
os.supports_dir_fd
permet donc de savoir, en fonction du système d'exploitation considéré,
quelles sont les fonctions du module os
supportant la gestion des descripteurs de dossiers. Il est donc possible de conditionner
leurs utilisations.
if os.rmdir in os.supports_dir_fd: fd = os.open("./folder", os.O_RDONLY) rmdir(dir_fd=fd)
Remove a directory. If dir_fd is not None, it should be a file descriptor open to a directory, and path should be relative; path will then be relative to that directory. dir_fd may not be implemented on your platform. If it is unavailable, using it will raise a NotImplementedError.
Paramètre | Description |
---|---|
path : str | bytes | os.PathLike |
Le chemin du dossier à supprimer |
dir_fd : int = None |
Le descripteur du dossier parent contenant le dossier à supprimer. |
Cette méthode ne renvoie aucune valeur.
FileNotFoundError :Une exception de ce type sera déclenchée si le chemin spécifié n'existe pas.
NotADirectoryError :Une exception de ce type sera déclenchée si le chemin spécifié ne correspond pas à un dossier.
PermissionError :Une exception de ce type sera déclenchée si vous n'avez pas les droits d'accès au répertoire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import os parent_path = "./ParentFolder" child_path = "Folder" try: # On crée deux dossiers imbriqués dans le dossier courant os.makedirs(parent_path + os.sep + child_path) except OSError: print("Dossiers déjà existant.") try: # Récupération du descripteur du dossier parent fd = os.open(parent_path, os.O_RDONLY) # Appel à rmdir en spécifiant un descripteur de dossier os.rmdir(child_path, dir_fd=fd) # Appel à rmdir sans descripteur de dossier os.rmdir(parent_path) # On affiche le contenu du dossier courant os.system("ls -l") except OSError: print("Impossible de supprimer les dossiers.") print("Bye bye") |
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :