gpt4 book ai didi

python - 如何正确引发 FileNotFoundError?

转载 作者:IT老高 更新时间:2023-10-28 21:51:19 27 4
gpt4 key购买 nike

我使用的第三方库很好,但不会按照我想要的方式处理不存在的文件。当给它一个不存在的文件时,而不是提高旧的

FileNotFoundError: [Errno 2] No such file or directory: 'nothing.txt'

它提出了一些晦涩的信息:

OSError: Syntax error in file None (line 1)

我不想处理丢失的文件,不想捕获或处理异常,不想引发自定义异常,也不想打开文件,如果它不存在,也不创建它。

我只想检查它是否存在(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

这比“文件无语法错误”要好,但是如何使用正确的消息引发“真正的”python 异常,而无需重新实现呢?

最佳答案

传入参数:

import errno
import os

raise FileNotFoundError(
errno.ENOENT, os.strerror(errno.ENOENT), filename)

FileNotFoundErrorOSError 的子类,这需要几个参数。第一个是来自 errno module 的错误代码(文件未找到总是errno.ENOENT),第二个错误消息(使用os.strerror() 来获取),并将文件名作为第三个传递。

回溯中使用的最终字符串表示是根据这些参数构建的:

>>> print(FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), 'foobar'))
[Errno 2] No such file or directory: 'foobar'

关于python - 如何正确引发 FileNotFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36077266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com