5

在打开该目录中的文件之前,我试图在目录不存在时引发错误。根据这个回复,我应该为我的问题使用最具体的异常构造函数,我认为是NotADirectoryError. 但是运行下面的代码我得到NameError: global name 'NotADirectoryError' is not defined. 提前感谢您的帮助!

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

如果有更好的方法,请提出建议,谢谢。

4

4 回答 4

4

您可能正在使用 Python 2,它没有定义NotADirectoryError. 但是,这在 Python 3 中定义的,这正是您尝试使用它的目的。

如果需要使用 Python 2,则需要通过类自己定义错误。通读有关用户定义的异常的文档,以了解如何对类进行子Exception类化并在必要时根据自己的需要对其进行自定义。这是一个非常简单的例子:

class NotADirectoryError(Exception):
    pass

这将获取传递给它的字符串并将其打印出来,就像你想要的那样。

于 2015-03-19T01:08:04.580 回答
1

错误信息很清楚:NotADirectoryError尚未定义。如果您想弥补自己的例外情况,@MattDMo 会向您指出如何去做。如果要使用现有的异常,IOError似乎最合适。

于 2015-03-19T01:02:39.050 回答
1

如果您知道异常属于哪个模块,请导入该异常:

from my.exception.module import NotADirectoryError

如果没有,则必须定义此类:

class NotADirectoryError(Exception):
    pass
于 2015-03-19T01:05:55.063 回答
0

通常,例外是类。您必须创建一个 NotADirectoryError 类,它是某事的子类,可能是 exceptions.OSError,因为这就是 os 模块在这种情况下会引发的。

于 2015-03-19T01:02:58.783 回答