2013-04-16 13 views
8

Chcę uruchomić polecenie mkdir jak:Jak uruchomić osmkdir() z opcją -p w Pythonie?

mkdir -p directory_name 

jaka jest metoda, aby to zrobić w Pythonie?

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

spróbować os.makedirs ('/ wielokrotne/ścieżki /') – rajpy

+1

Duplikat: http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python?rq=1 –

+0

Możliwy duplikat [Funkcja mkdir -p w Pythonie] (http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python) –

Odpowiedz

21

Można spróbować to:

# 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 nie ma atrybutu errno. – pynovice

+0

Powinieneś dodać do początku kodu 'import errno' –

+1

To powinno być os.mkdirs (ważne jest to, że koniec jest ważny), ale SO nie pozwala mi przesłać tak małej edycji. –

12

coś takiego:

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

UPD: jak to powiedział w komentarzach trzeba sprawdzić wyjątku dla bezpieczeństwa wątku

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

To nieodłączny wyścig, a zatem * bardzo * zły pomysł. – Voo

+2

jest to podatne na warunki wyścigowe. Tj., Jeśli jakiś inny proces/wątek tworzy 'nazwa_katalogu' po' if' ale przed 'os.mkdirs', ten kod wyrzuci wyjątek –

0

co powiesz na to os.system('mkdir -p %s' % directory_name)

Powiązane problemy