2015-03-19 148 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 
相关问题