Python中[Errno 2]错误含义及显示差异原因咨询
关于FileNotFoundError中[Errno 2]的解释
1. [Errno 2]的来源
[Errno 2]是操作系统层面的错误代码,对应"文件或目录不存在"的系统错误。当你调用Python的文件操作函数(比如open())时,Python会底层调用操作系统的文件系统API。如果操作系统返回"找不到文件"的错误,Python会捕获这个系统错误码(即Errno 2),并将其嵌入到FileNotFoundError的提示信息中,同时还会附带操作系统返回的错误描述和出错的文件名。
2. 手动触发异常无Errno标识的原因
当你执行raise FileNotFoundError("This is a test")时,只是给异常传递了自定义字符串消息,并没有设置errno参数。这种情况下,Python不会自动添加系统错误码标识。如果想要手动生成带Errno的异常,需要显式传入错误码参数:
raise FileNotFoundError(2, "This is a test", "tlesting.py")
此时触发的异常会显示:FileNotFoundError: [Errno 2] This is a test: 'tlesting.py'
3. 与Python版本和操作系统的关系
- 操作系统:Errno是操作系统定义的错误码体系,不同OS的Errno编号可能有差异,但
Errno 2在绝大多数类Unix系统(Linux、macOS)和Windows中都对应"文件不存在",所以这个编号在常见系统中是一致的。其他Errno值可能因OS不同而含义不同。 - Python版本:在Python 3.3之前,没有专门的
FileNotFoundError,这类文件系统错误会以OSError的形式抛出,同样会携带Errno 2。从Python 3.3开始,FileNotFoundError成为OSError的子类,专门用于捕获文件不存在的错误,并且在由系统操作触发时会自动填充Errno、错误描述等信息。
内容的提问来源于stack exchange,提问作者5rod
相关产品推荐
相关产品推荐

