2015-03-19 152 views
0

我試圖在目錄不存在時提出錯誤,然後在該目錄中打開文件。根據this response我應該爲我的問題使用最具體的異常構造函數,我認爲這是NotADirectoryError。但運行下面的代碼我得到NameError: global name 'NotADirectoryError' is not defined。預先感謝任何幫助!Python raise NotADirectoryError

import os 
if not os.path.isdir(baselineDir): 
    raise NotADirectoryError("No results directory for baseline.") 

如果有更好的方法可以做到這一點,請提出建議,謝謝。

回答

1

你很可能會使用Python 2,這沒有定義NotADirectoryError。但是,Python 3中的這個is defined正是您試圖使用它的目的。

如果你需要使用Python 2,你需要通過一個類自己定義錯誤。閱讀有關user-defined exceptions的文檔,瞭解如何子類化Exception類,並根據您的需要定製它,如有必要。這裏有一個非常簡單的例子:

class NotADirectoryError(Exception): 
    pass 

這將把字符串傳遞給它並打印出來,就像你想要的一樣。

1

錯誤消息非常明確:NotADirectoryError尚未定義。如果您正在嘗試彌補自己的例外情況,@MattDMo會指示您如何處理它。如果您想使用現有的例外情況,IOError似乎最合適。

0

例外情況通常是類。你必須創建一個NotadirectoryError類,它是一些東西的子類,可能是異常.OSError,因爲在這種情況下,os模塊將會引發這種情況。

0

導入如果您知道它屬於哪個模塊異常:

from my.exception.module import NotADirectoryError 

如果沒有,你必須定義這個類:

class NotADirectoryError(Exception): 
    pass 
相關問題