python mkdir -p_Python中的mkdir -p功能[复制]
正如其他解決方案中所提到的,我們希望能夠在模仿 mkdir -p 的行為時命中文件系統一次 . 我不認為這是可能的,但我們應該盡可能接近 .
代碼優先,稍后說明:
import os
import errno
def mkdir_p(path):
""" 'mkdir -p' in Python """
try:
os.makedirs(path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else:
raise
由于對@ tzot的回答的注釋表明在實際創建目錄之前檢查是否可以創建目錄存在問題:在此期間您無法判斷是否有人更改了文件系統 . 這也符合Python要求寬恕的風格,而不是許可 .
所以我們要做的第一件事就是嘗試制作目錄,然后如果出錯,找出原因 .
正如Jacob Gabrielson指出的那樣,我們必須尋找的一個案例是我們試圖放置目錄的文件已存在的情況 .
使用 mkdir -p :
$ touch /tmp/foo
$ mkdir -p /tmp/foo
mkdir: cannot create directory '/tmp/foo': File exists
Python中的類似行為是引發異常 .
因此,如果是這種情況,我們必須解決 . 不幸的是,我們做不到 . 我們從makedirs獲得相同的錯誤消息,無論目錄是否存在(正常)還是存在防止創建目錄(壞)的文件 .
解決問題的唯一方法是再次檢查文件系統以查看是否有目錄 . 如果有,則以靜默方式返回,否則引發異常 .
唯一的問題是文件系統現在可能處于與調用makedirs時不同的狀態 . 例如:存在導致makedirs失敗的文件,但現在有一個目錄 . 這并不重要,因為在最后一個文件系統調用目錄時,該函數只會在不引發異常的情況下靜默退出 .
總結
以上是生活随笔為你收集整理的python mkdir -p_Python中的mkdir -p功能[复制]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么让电脑屏幕一直亮着_电脑屏幕总是闪烁
- 下一篇: 功能强大!IntelliJ IDEA 2