簡體   English   中英

是否存在從Python的OSError獲取信息的跨平台方式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM