os.makedirs
函數執行此操作。請嘗試以下操作:
import os
import errno
filename = "/foo/bar/baz.txt"
if not os.path.exists(os.path.dirname(filename)):
try:
os.makedirs(os.path.dirname(filename))
except OSError as exc: # Guard against race condition
if exc.errno != errno.EEXIST:
raise
with open(filename, "w") as f:
f.write("FOOBAR")
之所以要添加try-except
塊是os.path.exists
和os.makedirs
調用之間創建的目錄時需要處理的話,這樣就保護我們免受競爭條件。
在Python 3.2+,有more elegant way避免上述競態條件:
filename = "/foo/bar/baz.txt"¨
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "w") as f:
f.write("FOOBAR")
就不得不看過去'os.mkdir'和一個更函數讀取的文檔:) – mgilson
這裏有一個稍微不同的方法:http://stackoverflow.com/a/14364249/1317713 想法? – Leonid
自'os.makedirs'使用[EAFP](https://docs.python.org/2/glossary.html#term-eafp)之後,是否需要初始'如果不是os.path.exists'? –