Python引发NotADirectoryError异常

6

在打开目录下的文件之前,我希望能够在目录不存在时引发错误。根据这个回答,我应该使用最具体的异常构造函数来处理我的问题,我认为应该使用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

你可能正在使用 Python 2,它没有定义 NotADirectoryError。不过,这 Python 3 中定义了,正好符合你尝试使用它的目的。

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

class NotADirectoryError(Exception):
    pass

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

1

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

from my.exception.module import NotADirectoryError

如果不这样做,你必须定义这个类:
class NotADirectoryError(Exception):
    pass

1
错误信息非常明显:NotADirectoryError未被定义。如果您想要自定义异常,请参考@MattDMo的方法。如果您想使用现有的异常,则IOError似乎是最合适的选择。

0

通常情况下,异常是类。您需要创建一个NotADirectoryError类,它是某个类的子类,可能是exceptions.OSError,因为这是os模块在该情况下会引发的异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接