1. 程式人生 > >檢查一個資料夾是否存在,如果不存在就建立它

檢查一個資料夾是否存在,如果不存在就建立它

filename = "/my/directory/filename.txt"
dir = os.path.dirname(filename)

try:
    os.stat(dir)
except:
    os.mkdir(dir)

f = file(filename)

我忘記了os.path.exists(多謝張三,李四,王五的提醒).下面是更改的:

def ensure_dir(f):
    d = os.path.dirname(f)
    if not os.path.exists(d):
        os.makedirs(d)

有什麼"開啟"的標記可以自動的執行?

我看了倆答案都很好,但是都有一點缺陷,所以給出我的:

先試os.path.exists,然後通過os.makedirs來建立.

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

標註一下-如果一個檔案在呼叫os.path.existsos.makedirs之間被建立了,將會出現一個OSError.遺憾的是捕獲OSError異常繼續進行並不是萬無一失的,它將會忽略像磁碟空間不足,沒有足夠許可權等一些其他造成檔案建立失敗的因素.

一個做法是捕獲OSError異常並檢查返回的錯誤程式碼(前提是知道錯誤程式碼對應的是什麼).然而,還有另一種可能,第二次的os.path.exists

.假如恰好在第一次檢查的時候建立了資料夾,然後在第二次檢查的時候刪掉--我們被耍了~~

根據不同的應用,並行操作的危險或多或少的比其他因素危險.開發者必須在選擇開發環境的時候更多地瞭解特定的應用程式.