Как запустить os.mkdir() с опцией -p в Python?

Я хочу запустить команду mkdir как:

mkdir -p directory_name

Какой способ сделать это в Python?

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

Ответ 1

Вы можете попробовать следующее:

# 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

Ответ 2

Что-то вроде этого:

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

UPD: как сказано в комментариях, вам нужно проверить исключение для безопасности потоков

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

Ответ 3

Согласно документации, теперь вы можете использовать это с python 3.2

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

и он не выдаст ошибку, когда каталог существует.

Ответ 4

Если вы используете pathlib, используйте Path.mkdir(parents=True, exist_ok=True)

from pathlib import Path

new_directory = Path('./some/nested/directory')
new_directory.mkdir(parents=True, exist_ok=True)

parent parents=True создает родительские каталоги по мере необходимости

exist_ok=True говорит mkdir() не exist_ok=True ошибку, если каталог уже существует

Смотрите pathlib.Path.mkdir() документы.

Ответ 5

как насчет этого os.system('mkdir -p %s' % directory_name )