makedirs pour créer des répertoires hiérarchiques profonds de manière récursive en Python

Affaires

Erreur lors de la création d'un nouveau répertoire avec os.mkdir() dans un répertoire inexistant

os.mkdir()C'est la méthode utilisée pour créer un répertoire (dossier) en Python. Si vous essayez de créer un nouveau répertoire dans un répertoire inexistant, une erreur se produira.(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

Créer des répertoires récursivement avec os.madeirs()

Si vous utilisez os.makedirs() au lieu de os.mkdir(), il créera un répertoire intermédiaire, de sorte que vous pouvez créer récursivement un répertoire hiérarchique profond.

os.makedirs('not_exist_dir/new_dir')

Dans le cas de cet exemple, il les créera tous en même temps. Il n'y a pas de problème s'il y a plusieurs nouveaux répertoires intermédiaires.

  • répertoire intermédiaire: not_exist_dir
  • répertoire final: new_dir

Toutefois, si le répertoire final existe déjà, une erreur se produira.(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

S'il y a un argument exist_ok

Depuis Python 3.2, l'argument exist_ok a été ajouté, et si exist_ok=True, aucune erreur ne se produira même si le répertoire final existe déjà. Si le répertoire final n'existe pas, un nouveau répertoire sera créé, et s'il existe, rien ne sera fait. Ceci est pratique car vous n'avez pas besoin de vérifier l'existence du répertoire terminal à l'avance.

os.makedirs('exist_dir/exist_dir', exist_ok=True)

Si l'argument exist_ok est manquant

Si vous avez une ancienne version de Python et que vous n'avez pas l'argument exist_ok dans os.madeirs, vous pouvez utiliser os.path.exists pour déterminer s'il existe ou non un répertoire final, puis en créer un nouveau uniquement s'il n'en existe pas.

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL