Participer au site avec un Tip
Rechercher
 

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 :

Module « os » Python 3.11.3

Fonction mkdir - module os

Signature de la fonction mkdir

 def mkdir(path: str | bytes | os.PathLike, mode: int = 0o777, *, dir_fd: int = None) -> None

Description

Cette fonction permet de créer un nouveau dossier (mkdir = MaKe DIRectory).. Vous pouvez spécifier les droits initiaux à appliquer au nouveau dossier en utilisant le paramètre mode.

il est possible, en Python, de spécifier un entier en base octale (base 8), en débutant votre nombre via le préfixe 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.
si vous cherchez à créer un dossier temporaire, il est alors préférable d'utiliser la fonction tempfile.mkdtemp.
si vous cherchez à produire plusieurs dossiers imbriqués les uns dans les autres, alors veuillez préférer l'utilisation de la fonction os.makedirs.

Deux possibilités vous sont proposées pour indiquer le dossier à créer :

mkdir("./folder")
fd = os.open("./parentFolder", os.O_RDONLY) 
mkdir("folder", dir_fd=fd)
le caractère * 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.
la gestion des descripteurs de fichiers et de dossier, et donc du paramètre 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)

help(os.mkdir)

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ètres

ParamètreDescription
 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.

Valeur de retour

Cette méthode ne renvoie aucune valeur.

Exceptions

Exemple(s) de code

 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")
Exemple d'utilisation de la fonction os.mkdir.
à date de l'écriture de cette page, les descripteurs de fichiers et de dossiers ne fonctionnent pas sous Windows !

Voir aussi