- À propos de la création de dossiers en Python
- Créer un dossier avec os.mkdir()
- Créer plusieurs dossiers avec os.makedirs()
- Éviter les erreurs lors de la création d'un dossier
- Créer des dossiers avec des chemins absolus et relatifs
- Vérifier et créer automatiquement un dossier
- Différences entre os.mkdir() et os.makedirs()
Python permet de créer facilement des dossiers et des arborescences de dossiers grâce au module os. Les deux fonctions principalement utilisées sont os.mkdir() et os.makedirs(). Dans ce tutoriel, nous allons découvrir leur fonctionnement, leurs différences et les principales précautions à prendre lors de leur utilisation.
1. À propos de la création de dossiers en Python
Le module os de Python fournit différentes fonctions permettant d'interagir avec le système d'exploitation. Il permet notamment de manipuler des fichiers, des dossiers et des chemins.
Pour utiliser les fonctions os.mkdir() et os.makedirs(), nous devons commencer par importer le module os.
1 2 | import os print("Module os importé avec succès.") |
Sortie :
1 | Module os importé avec succès. |
Les deux principales fonctions étudiées dans ce tutoriel sont :
- os.mkdir() : permet principalement de créer un seul dossier ;
- os.makedirs() : permet de créer une arborescence complète de dossiers.
2. Créer un dossier avec os.mkdir()
La fonction os.mkdir() permet de créer un nouveau dossier. Elle reçoit comme argument le chemin ou le nom du dossier à créer.
Dans l'exemple suivant, nous créons un dossier nommé documents dans le répertoire courant.
1 2 3 | import os os.mkdir("documents") print("Le dossier documents a été créé.") |
Sortie :
1 | Le dossier documents a été créé. |
Après l'exécution du programme, un dossier nommé documents apparaît dans le répertoire de travail courant.
Créer un dossier à l'intérieur d'un autre dossier
Si le dossier parent existe déjà, os.mkdir() peut également créer un sous-dossier. Supposons que le dossier documents existe. Nous pouvons créer à l'intérieur un dossier nommé python.
1 2 3 | import os os.mkdir("documents/python") print("Le dossier python a été créé.") |
Sortie :
1 | Le dossier python a été créé. |
Nous obtenons alors l'arborescence suivante :
1 2 | documents/ └── python/ |
Attention : avec os.mkdir(), le dossier parent doit déjà exister.
3. Créer plusieurs dossiers avec os.makedirs()
La fonction os.makedirs() permet de créer plusieurs niveaux de dossiers en une seule instruction. Contrairement à os.mkdir(), elle crée automatiquement les dossiers parents manquants.
Dans l'exemple suivant, nous créons une arborescence contenant les dossiers cours, python et exercices.
1 2 3 | import os os.makedirs("cours/python/exercices") print("L'arborescence a été créée.") |
Sortie :
1 | L'arborescence a été créée. |
Python crée automatiquement l'arborescence suivante :
1 2 3 | cours/ └── python/ └── exercices/ |
C'est l'un des principaux avantages de os.makedirs() : il n'est pas nécessaire de créer chaque dossier séparément.
Créer une arborescence plus importante
Nous pouvons utiliser le même principe pour créer une structure contenant plusieurs niveaux. Dans l'exemple suivant, Python crée automatiquement tous les dossiers manquants.
1 2 3 | import os os.makedirs("projet/python/fichiers/images") print("Les dossiers du projet ont été créés.") |
Sortie :
1 | Les dossiers du projet ont été créés. |
L'arborescence obtenue est :
1 2 3 4 | projet/ └── python/ └── fichiers/ └── images/ |
4. Éviter les erreurs lors de la création d'un dossier
Une erreur fréquente apparaît lorsqu'on tente de créer un dossier qui existe déjà. Avec os.mkdir(), Python déclenche alors une exception FileExistsError.
Par exemple, si le dossier documents existe déjà, le code suivant provoque une erreur.
1 2 | import os os.mkdir("documents") |
Sortie possible :
1 | FileExistsError: [Errno 17] File exists: 'documents' |
Vérifier l'existence du dossier
Pour éviter cette erreur, nous pouvons utiliser os.path.exists(). Cette fonction permet de vérifier si un chemin existe avant d'essayer de créer le dossier.
1 2 3 4 5 6 7 | import os dossier = "documents" if not os.path.exists(dossier): os.mkdir(dossier) print("Le dossier a été créé.") else: print("Le dossier existe déjà.") |
Sortie si le dossier existe :
1 | Le dossier existe déjà. |
Cette méthode est utile lorsqu'un programme doit créer un dossier uniquement lorsqu'il n'existe pas encore.
Utiliser exist_ok avec os.makedirs()
La fonction os.makedirs() propose une solution particulièrement pratique avec le paramètre exist_ok=True. Lorsque ce paramètre est activé, aucune erreur n'est déclenchée si le dossier cible existe déjà.
1 2 3 | import os os.makedirs("cours/python/exercices", exist_ok=True) print("Le dossier est disponible.") |
Sortie :
1 | Le dossier est disponible. |
Cette technique est particulièrement pratique lorsqu'un programme doit s'assurer qu'une arborescence existe, qu'elle ait déjà été créée ou non.
5. Créer des dossiers avec des chemins absolus et relatifs
Les fonctions os.mkdir() et os.makedirs() peuvent travailler avec des chemins relatifs ou des chemins absolus.
Utiliser un chemin relatif
Un chemin relatif est interprété par rapport au répertoire de travail courant. Le code suivant crée par exemple le dossier images dans le dossier courant.
1 2 3 | import os os.mkdir("images") print("Le dossier images a été créé.") |
Sortie :
1 | Le dossier images a été créé. |
Connaître le répertoire de travail courant
La fonction os.getcwd() permet de connaître le dossier dans lequel Python travaille actuellement. Cela permet notamment de savoir où sera créé un dossier lorsqu'un chemin relatif est utilisé.
1 2 | import os print(os.getcwd()) |
Sortie possible sous Windows :
1 | C:\Users\dell\Desktop\projet |
Utiliser un chemin absolu
Un chemin absolu indique directement l'emplacement complet du dossier. Sous Windows, nous pouvons utiliser une chaîne brute précédée de la lettre r afin de gérer facilement les antislashs du chemin.
1 2 3 | import os os.mkdir(r"C:\Users\dell\Desktop\NouveauDossier") print("Le dossier a été créé sur le Bureau.") |
Sortie :
1 | Le dossier a été créé sur le Bureau. |
Le préfixe r placé devant la chaîne permet d'utiliser le chemin Windows sans que les caractères précédés de \ soient interprétés comme certaines séquences spéciales de Python.
6. Vérifier et créer automatiquement un dossier
Dans une application réelle, il est fréquent de devoir créer automatiquement certains dossiers nécessaires au fonctionnement du programme, par exemple images, documents, sauvegardes ou uploads.
Dans l'exemple suivant, nous vérifions avec os.path.isdir() si le chemin correspond déjà à un dossier. Dans le cas contraire, nous créons l'arborescence avec os.makedirs().
1 2 3 4 5 6 7 | import os dossier = "application/uploads/images" if not os.path.isdir(dossier): os.makedirs(dossier) print("Le dossier a été créé.") else: print("Le dossier existe déjà.") |
Sortie lors de la première exécution :
1 | Le dossier a été créé. |
Lors d'une nouvelle exécution du programme, si le dossier existe toujours, nous obtenons :
1 | Le dossier existe déjà. |
Créer plusieurs dossiers nécessaires à une application
Nous pouvons également placer les noms des dossiers dans une liste puis utiliser une boucle for. L'utilisation de exist_ok=True permet d'exécuter le programme plusieurs fois sans provoquer d'erreur lorsque les dossiers existent déjà.
1 2 3 4 5 | import os dossiers = ["application/images", "application/documents", "application/sauvegardes"] for dossier in dossiers: os.makedirs(dossier, exist_ok=True) print("Tous les dossiers sont disponibles.") |
Sortie :
1 | Tous les dossiers sont disponibles. |
Nous obtenons la structure suivante :
1 2 3 4 | application/ ├── images/ ├── documents/ └── sauvegardes/ |
Cette technique est particulièrement utile lors de l'initialisation d'une application Python.
7. Différences entre os.mkdir() et os.makedirs()
Les fonctions os.mkdir() et os.makedirs() servent toutes les deux à créer des dossiers, mais elles ne répondent pas exactement aux mêmes besoins.
- os.mkdir(chemin) crée un seul dossier et nécessite que son dossier parent existe déjà.
- os.makedirs(chemin) peut créer plusieurs niveaux de dossiers et crée automatiquement les dossiers parents manquants.
- os.mkdir() déclenche une erreur lorsque le dossier existe déjà.
- os.makedirs() accepte exist_ok=True pour ne pas déclencher d'erreur lorsque le dossier cible existe déjà.
L'exemple suivant montre clairement la différence. Avec os.mkdir(), cette instruction ne fonctionne que si les dossiers site et images existent déjà.
1 2 3 | import os os.mkdir("site/images/produits") print("Le dossier produits a été créé.") |
Sortie si les dossiers parents n'existent pas :
1 | FileNotFoundError: [Errno 2] No such file or directory: 'site/images/produits' |
En utilisant os.makedirs(), Python peut créer automatiquement toute l'arborescence manquante.
1 2 3 | import os os.makedirs("site/images/produits", exist_ok=True) print("L'arborescence a été créée.") |
Sortie :
1 | L'arborescence a été créée. |
Nous obtenons :
1 2 3 | site/ └── images/ └── produits/ |
En résumé, utilisez os.mkdir() lorsque vous souhaitez créer un dossier dont le parent existe déjà. Utilisez os.makedirs() lorsque vous souhaitez créer une arborescence complète ou vous assurer facilement qu'elle existe grâce à exist_ok=True.
Mots clés : Python, os, os.mkdir, os.makedirs, créer dossier Python, créer répertoire Python, dossier Python, répertoire Python, FileExistsError, FileNotFoundError, exist_ok, os.path.exists, os.path.isdir, chemin relatif, chemin absolu
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


