def mkdir(path: str | bytes | os.PathLike, mode: int = 0o777, *, dir_fd: int = None) -> None
mkdir
= MaKe DIRectory).mode
.
0o
.
La gestion des droits Unix/Linux étant basée sur une représentation en base octale, je vous recommande conserver cette façon de faire pour spécifier les droits
du nouveau dossier.
tempfile.mkdtemp
.
os.makedirs
.
Deux possibilités vous sont proposées pour indiquer le dossier à créer :
mkdir("./folder")
dir_fd
(depuis la version 3.3 de Python).
fd = os.open("./parentFolder", os.O_RDONLY) mkdir("folder", dir_fd=fd)
*
situé dans la déclaration des paramètres de la fonction mk_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.mkdir in os.supports_dir_fd: fd = os.open("./folder", os.O_RDONLY) mkdir(dir_fd=fd)
Create 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. The mode argument is ignored on Windows. Where it is used, the current umask value is first masked out.
Paramètre | Description |
---|---|
path : str | bytes | os.PathLike |
Le chemin du dossier à créer |
mode : int = 0o777 |
Les droits initiaux du nouveau dossier. |
dir_fd : int = None |
Le descripteur du dossier parent contenant le dossier à créer. |
Cette méthode ne renvoie aucune valeur.
FileExistsError :Une exception de ce type sera déclenchée si le dossier existe déjà.
FileNotFoundError :Une exception de ce type sera déclenchée si le chemin parent du dossier à créer n'existe pas ou n'est pas un dossier.
NotImplementedError :Une exception de ce type sera déclenchée si la fonction
mkdir
n'est pas implémentée pour votre système d'exploitation (c'est rare, mais possible).
PermissionError :Une exception de ce type sera déclenchée si vous n'avez pas les droits d'accès sur le répertoire parent du dossier à créer.
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 |
import os parent = "./folder" try: # On utilise mkdir sans descripteur de dossier os.mkdir(parent, 0o755) # On capture le descripteur sur le dossier qu'on vient de créer fd = os.open(parent, os.O_RDONLY) # On utilise mkdir avec le descripteur de dossier dans lequel travailler. os.mkdir("child1", 0o755, dir_fd=fd) os.mkdir("child2", 0o755, dir_fd=fd) os.mkdir("child3", 0o755, dir_fd=fd) # On liste le contenu du dossier nommé folder for file in os.listdir(parent): print(f"Dossier {file}") except PermissionError: print("T'es qui pour vouloir travailler ici ???") except OSError: # Classe mère des exceptions pouvant être levées. print("Problème durant le processus de construction de 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 :