2013-04-16 42 views
8

我想作爲運行mkdir命令:如何在Python中使用-p選項運行os.mkdir()?

mkdir -p directory_name 

什麼方法做到這一點在Python?

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

嘗試os.makedirs( '/多個/路徑/') – rajpy

+1

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

+0

可能的複製[Python中的mkdir -p功能](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(結尾是重要的),但是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'之前創建'directory_name',這段代碼將會拋出異常 –

0

這個怎麼樣 個 os.system('mkdir -p %s' % directory_name)

相關問題