我使用的第三方库很好但不按照我想要的方式处理不存在的文件。给它一个不存在的文件时,而不是提高旧的
FileNotFoundError: [Errno 2] No such file or directory: 'nothing.txt'
它提出了一些模糊的信息:
OSError: Syntax error in file None (line 1)
我不想处理丢失的文件,不想捕获或处理异常,不想提出自定义异常,也不想要我open
该文件,如果它不存在也不创建它。
我只想检查它是否存在(os.path.isfile(filename)
将执行此操作),如果没有,则只需引发正确的FileNotFoundError。
我试过了:
#!/usr/bin/env python3
import os
if not os.path.isfile("nothing.txt"):
raise FileNotFoundError
只有输出:
Traceback (most recent call last):
File "./test_script.py", line 6, in <module>
raise FileNotFoundError
FileNotFoundError
这比文件无&#34;中的&#34;语法错误更好,但如何提升&#34;真实&#34;带有正确消息的python异常,而不必重新实现它?
答案 0 :(得分:50)
传递参数:
import errno
import os
raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), filename)
FileNotFoundError
是docs的子类,它带有几个参数。第一个是来自OSError
的错误代码(找不到文件总是errno.ENOENT
),第二个是错误消息(使用errno
module获取此错误消息),并传入文件名作为第三
回溯中使用的最终字符串表示形式是从这些参数构建的:
>>> print(FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), 'foobar'))
[Errno 2] No such file or directory: 'foobar'