Vous pouvez également vouloir créer le répertoire s'il n'est pas là.
Source , s'il est toujours là sur SO.
================================================== ===================
Sur Python ≥ 3,5, utilisez pathlib.Path.mkdir:
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
Pour les anciennes versions de Python, je vois deux réponses avec de bonnes qualités, chacune avec un petit défaut, je vais donc donner mon avis:
Essayez os.path.existset pensez os.makedirsà la création.
import os
if not os.path.exists(directory):
os.makedirs(directory)
Comme indiqué dans les commentaires et ailleurs, il existe une condition de concurrence - si le répertoire est créé entre le os.path.existset les os.makedirsappels, le os.makedirséchouera avec un OSError. Malheureusement, la capture de couverture OSErroret la poursuite ne sont pas infaillibles, car elles ignoreront l'échec de la création du répertoire en raison d'autres facteurs, tels que des autorisations insuffisantes, un disque plein, etc.
Une option serait de piéger le OSErroret d'examiner le code d'erreur incorporé (voir Existe - t-il un moyen multiplateforme d'obtenir des informations à partir de OSError de Python ):
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
Alternativement, il pourrait y en avoir un second os.path.exists, mais supposons qu'un autre crée le répertoire après la première vérification, puis le supprime avant le second - nous pourrions encore être dupes.
Selon l'application, le danger des opérations simultanées peut être supérieur ou inférieur au danger posé par d'autres facteurs tels que les autorisations de fichiers. Le développeur devrait en savoir plus sur l'application particulière en cours de développement et son environnement attendu avant de choisir une implémentation.
Les versions modernes de Python améliorent un peu ce code, à la fois en exposant FileExistsError(en 3.3 +) ...
try:
os.makedirs("path/to/directory")
except FileExistsError:
# directory already exists
pass
... et en permettant à un argument mot-clé d'être os.makedirsappeléexist_ok (en 3.2+).
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
os.statplace, pour voir si le répertoire existe et est un répertoire au même moment.