[英]Is there a cross-platform way of getting information from Python's OSError?
例如,在一個簡單的目錄創建操作中,我可以像這樣制作一個OSError:
(Ubuntu Linux)
>>> import os
>>> os.mkdir('foo')
>>> os.mkdir('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: 'foo'
現在我可以像這樣抓住這個錯誤:
>>> import os
>>> os.mkdir('foo')
>>> try:
... os.mkdir('foo')
... except OSError, e:
... print e.args
...
(17, 'File exists')
是否有一種跨平台的方式,我可以知道17或“文件存在”將始終意味着相同的事情,以便我可以根據情況采取不同的行動?
(這是在另一個問題中出現的 。)
errno
屬性應該在所有平台上都相同。 您將在Windows上獲得WindowsError
異常,但由於這是OSError的子類,因此相同的“ except OSError:
”塊將捕獲它。 Windows確實有自己的錯誤代碼,這些代碼可以作為.winerror
訪問,但.errno
屬性應該仍然存在,並且可以跨平台方式使用。
可以在errno
模塊中找到各種錯誤代碼的符號名稱。 例如,
import os, errno
try:
os.mkdir('test')
except OSError, e:
if e.errno == errno.EEXIST:
# Do something
您還可以使用errno.errorcode
執行反向查找(以查找應使用的代碼)。 那是:
>>> errno.errorcode[17]
'EEXIST'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.