5491 votes

Vérifier si un répertoire existe et de le créer si nécessaire

Quelle est la façon la plus élégante pour vérifier si le répertoire d'un fichier va être écrit existe, et si pas, créez le répertoire? Voici ce que j'ai essayé:

filename = "/my/directory/filename.txt"
dir = os.path.dirname(filename)

try:
    os.stat(dir)
except:
    os.mkdir(dir)       

f = file(filename)

D'une certaine manière, j'ai manqué os.path.exists (merci kanja, Blair, et Douglas). C'est ce que j'ai maintenant:

def ensure_dir(f):
    d = os.path.dirname(f)
    if not os.path.exists(d):
        os.makedirs(d)

Est-il un drapeau "open", qui fait de ce lieu automatiquement?

40 votes

En général, vous devrez tenir compte du cas où le nom du fichier ne contient pas de répertoire. Sur ma machine, dirname('foo.txt') donne '', qui n'existe pas et fait échouer makedirs().

14 votes

Dans python 2.7 os.path.mkdir n'existe pas. C'est os.mkdir .

9 votes

Si le chemin existe il faut non seulement vérifier si c'est un répertoire et non un fichier normal ou un autre objet (beaucoup de réponses vérifient cela) mais il faut aussi vérifier s'il est accessible en écriture (je n'ai pas trouvé de réponse qui vérifie cela).

-4voto

Sous Linux, vous pouvez créer des répertoires imbriqués

 dir1/dir2/... 

en une seule ligne :

import os
os.system("mkdir -p {0}".format('dir1/dir2/dir3'))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X