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

Я хочу бежать mkdir команда as:

mkdir -p directory_name

каков метод для этого в Python?

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

5 ответов


вы можете попробовать это:

# 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

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

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

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

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

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


можно сделать path.mkdir(parents=True, exist_ok=True) Если вы используете pathlib.

from pathlib import Path

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

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

parents=True создает любые родительские каталоги, которые вам нужны и exist_ok=True говорит mkdir() не ошибка, если каталог уже существует. Вижу pathlib.Path.mkdir docs.


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