python mkdir -p_Python中的mkdir -p功能[复制]
正如其他解決方案中所提到的,我們希望能夠在模仿 mkdir -p 的行為時(shí)命中文件系統(tǒng)一次 . 我不認(rèn)為這是可能的,但我們應(yīng)該盡可能接近 .
代碼優(yōu)先,稍后說明:
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
由于對(duì)@ tzot的回答的注釋表明在實(shí)際創(chuàng)建目錄之前檢查是否可以創(chuàng)建目錄存在問題:在此期間您無法判斷是否有人更改了文件系統(tǒng) . 這也符合Python要求寬恕的風(fēng)格,而不是許可 .
所以我們要做的第一件事就是嘗試制作目錄,然后如果出錯(cuò),找出原因 .
正如Jacob Gabrielson指出的那樣,我們必須尋找的一個(gè)案例是我們?cè)噲D放置目錄的文件已存在的情況 .
使用 mkdir -p :
$ touch /tmp/foo
$ mkdir -p /tmp/foo
mkdir: cannot create directory '/tmp/foo': File exists
Python中的類似行為是引發(fā)異常 .
因此,如果是這種情況,我們必須解決 . 不幸的是,我們做不到 . 我們從makedirs獲得相同的錯(cuò)誤消息,無論目錄是否存在(正常)還是存在防止創(chuàng)建目錄(壞)的文件 .
解決問題的唯一方法是再次檢查文件系統(tǒng)以查看是否有目錄 . 如果有,則以靜默方式返回,否則引發(fā)異常 .
唯一的問題是文件系統(tǒng)現(xiàn)在可能處于與調(diào)用makedirs時(shí)不同的狀態(tài) . 例如:存在導(dǎo)致makedirs失敗的文件,但現(xiàn)在有一個(gè)目錄 . 這并不重要,因?yàn)樵谧詈笠粋€(gè)文件系統(tǒng)調(diào)用目錄時(shí),該函數(shù)只會(huì)在不引發(fā)異常的情況下靜默退出 .
總結(jié)
以上是生活随笔為你收集整理的python mkdir -p_Python中的mkdir -p功能[复制]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么让电脑屏幕一直亮着_电脑屏幕总是闪烁
- 下一篇: websocket python爬虫_p