2013-04-16 3 views
8

Я хочу запустить mkdir команду как:Как запустить os.mkdir() с опцией -p в Python?

mkdir -p directory_name 

Что способ сделать это в Python?

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

Try os.makedirs ('/ множественный/путь /') – rajpy

+1

дубликат: http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python?rq=1 –

+0

Возможные дубликатом [mkdir -p функциональность в Python] (http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python) –

ответ

21

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

# 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 
+1

exc не имеет атрибута errno. – pynovice

+0

Вы должны добавить в начало кода 'import errno' –

+1

Это должно быть os.mkdirs (окончание s важно), но SO не позволит мне отправить такое небольшое редактирование. –

12

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

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 
+2

Это неотъемлемое состояние гонки 7 и, следовательно, * очень * плохая идея. – Voo

+2

это склонно к условиям гонки. То есть, если какой-то другой процесс/поток создает 'имя_каталога' после' if', но до 'os.mkdirs', этот код будет вызывать исключение –

Смежные вопросы