web-dev-qa-db-fra.com

Comment exécuter os.mkdir () avec l'option -p en Python?

Je veux exécuter la commande mkdir en tant que:

mkdir -p directory_name

Quelle est la méthode pour faire cela en Python?

os.mkdir(directory_name [, -p]) didn't work for me.
13
pynovice

Vous pouvez essayer ceci:

# top of the file
import os
import errno

# the actual code
try:
    os.makedirs(directory_name)
except OSError as exc: 
    if exc.errno == errno.EEXIST and os.path.isdir(directory_name):
        pass
25
Adem Öztaş

Quelque chose comme ça:

if not os.path.exists(directory_name):
    os.makedirs(directory_name)

UPD: comme il est dit dans un commentaire, vous devez vérifier s'il y a une exception pour la sécurité du thread

try:
    os.makedirs(directory_name)
except OSError as err:
    if err.errno!=17:
        raise
12
singer

Selon la documentation , vous pouvez maintenant l’utiliser depuis python 3.2

os.makedirs("/directory/to/make", exist_ok=True)

et il ne générera pas d'erreur lorsque le répertoire existe.

8
Michael Ma

Vous pouvez faire path.mkdir(parents=True, exist_ok=True) si vous utilisez pathlib.

from pathlib import Path

directory = Path('./some/nested/directory')

direcotry.mkdir(parents=True, exist_ok=True)

parents=True crée tous les répertoires parents dont vous avez besoin et exist_ok=True indique à mkdir() de ne pas commettre d'erreur si le répertoire existe déjà. Voir le pathlib.Path.mkdir docs .

0
Boris