Python 引发 NotADirectoryError

Python raising NotADirectoryError

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

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

如果有更好的方法请推荐,谢谢。

错误消息很清楚:NotADirectoryError 尚未定义。如果您正在尝试弥补自己的异常,@MattDMo 会告诉您如何去做。如果您想使用现有的异常,IOError 似乎最合适。

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

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

from my.exception.module import NotADirectoryError

如果没有,你必须定义这个class:

class NotADirectoryError(Exception):
    pass

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

如果你需要使用Python2,你需要通过class自己定义错误。阅读有关 user-defined exceptions 的文档,了解如何对 Exception class 进行子class,并在必要时根据自己的需要对其进行自定义。这是一个非常简单的例子:

class NotADirectoryError(Exception):
    pass

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