Créer des dossiers en Python avec 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.

Sortie :

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.

Sortie :

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.

Sortie :

Nous obtenons alors l'arborescence suivante :

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.

Sortie :

Python crée automatiquement l'arborescence suivante :

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.

Sortie :

L'arborescence obtenue est :

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.

Sortie possible :

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.

Sortie si le dossier existe :

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à.

Sortie :

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.

Sortie :

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é.

Sortie possible sous Windows :

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.

Sortie :

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().

Sortie lors de la première exécution :

Lors d'une nouvelle exécution du programme, si le dossier existe toujours, nous obtenons :

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à.

Sortie :

Nous obtenons la structure suivante :

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à.

Sortie si les dossiers parents n'existent pas :

En utilisant os.makedirs(), Python peut créer automatiquement toute l'arborescence manquante.

Sortie :

Nous obtenons :

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/


Leave a Reply

Your email address will not be published. Required fields are marked *