如何正确引发 FileNotFoundError?
How do I raise a FileNotFoundError properly?
我使用的第三方库很好,但无法按照我希望的方式处理不存在的文件。当给它一个不存在的文件时,而不是提高旧的
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
这比 "Syntax error in file None" 更好,但是如何使用正确的消息引发 "real" python 异常,而不必重新实现它?
传入参数:
import errno
import os
raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), filename)
FileNotFoundError
是OSError
, which takes several arguments. The first is an error code from the errno
module (file not found is always errno.ENOENT
), the second the error message (use os.strerror()
的子类得到这个),传入文件名作为3rd.
回溯中使用的最终字符串表示是根据这些参数构建的:
>>> print(FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), 'foobar'))
[Errno 2] No such file or directory: 'foobar'
我使用的第三方库很好,但无法按照我希望的方式处理不存在的文件。当给它一个不存在的文件时,而不是提高旧的
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
这比 "Syntax error in file None" 更好,但是如何使用正确的消息引发 "real" python 异常,而不必重新实现它?
传入参数:
import errno
import os
raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), filename)
FileNotFoundError
是OSError
, which takes several arguments. The first is an error code from the errno
module (file not found is always errno.ENOENT
), the second the error message (use os.strerror()
的子类得到这个),传入文件名作为3rd.
回溯中使用的最终字符串表示是根据这些参数构建的:
>>> print(FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), 'foobar'))
[Errno 2] No such file or directory: 'foobar'