当前位置: 首页 > 知识库问答 >
问题:

Python:映射errno到OSError的子类

宗晟
2023-03-14

我有一个调用C函数的Python 3程序。C函数在成功时返回一个整数:0,或在失败时返回相应的errno。失败时,Python代码可以简单地引发OSError。但我更希望它提出OSError的适当子类。

例如,如果Python程序得到返回代码2,它应该引发FileNotFoundError,这是OSError的子类。通过执行以下三个步骤,我已经可以找到正确的子类。显然,性能不是问题,因为对于errno的所有值,我只需要在每个版本的Python 3中执行一次这些步骤,并缓存结果。

  1. 查找OSError的所有子类。这很容易使用\uuuu子类\uuuu,必要时可以递归使用

但第三步真的是非常非常笨拙。有没有一种方法可以在不解析文档的情况下执行该步骤?在本地主机上的Python中是否有我可以检查的东西?

共有1个答案

琴正初
2023-03-14

当您查看文档时,我相信此翻译是自动完成的。例如,如果您拨打:

raise OSError(2, 'this went wrong') # here the 2 corresponds to the error given by C
# raises -> FileNotFoundError: [Errno 2] this went wrong

有关此处使用的确切映射,请转到您参考的页面,并查看操作系统异常部分。

 类似资料:
  • 问题内容: 我正在尝试在python(2.7)脚本中使用Selenium建立chrome会话,如下所示: 但是我收到以下错误: 搜索其他问题时,一个常见的问题似乎是chromedriver不在路径上,但我检查了,并在了。我什至尝试明确指定路径: 具有相同的结果。有人知道可能是什么问题吗?我非常感谢您的帮助! 问题答案: 最终,我通过卸载chromedriver的所有实例(我在不同位置有多个实例)并

  • 问题内容: 我正在尝试通过管理页面上传图片,但一直在说: 上载时动态创建文件夹 。 在Traceback中,我发现此命令期间发生错误: 在/usr/lib64/python2.6/os.py第157行中,同时调用 意思是,它不能创建任何文件夹,因为它没有执行此操作的权限 我在服务器中将OpenSuse作为OS。在httpd.conf中,我有这个: 我需要chmod或chown吗? 问题答案: 您需

  • 我希望将XML反序列化为Java Pojo,但我不需要所有元素,并且我希望避免创建样板包装类来获取一些子元素 例如-->现在不起作用

  • SQLAlchemy历史上有两种不同风格的映射器配置。原始的映射API通常称为“经典”样式,而更自动化的映射样式称为“声明式”样式。SQLAlchemy现在将这两种映射样式称为 命令映射 和 声明性映射 . 这两种样式可以互换使用,因为每种样式的最终结果都是完全相同的—用户定义的类具有 Mapper 针对可选单元配置,通常由 Table 对象。 命令式和声明式映射都以ORM开头 registry

  • 问题内容: 我正在尝试运行一个程序来使用Python代码在其中进行一些系统调用,从而引发以下错误: 我的实际Python代码如下: 我可以获取有关如何解决此问题的一些建议吗? 问题答案: 使用,如果你传递一个字符串。 从文档: 如果传递单个字符串,则shell必须为True,否则该字符串必须简单地命名要执行的程序而无需指定任何参数。 要么:

  • 我有基类orderItem并且有子类DeviceItem和ServiceItem。我提供了下面的定义。当我收到这个请求时,我执行dozer映射以将jaxb模型转换为我创建的另一个数据模型。我的数据模型也有相同的OrderItem、DerviceItem和DeviceItem类,它们是POJO。当我进行dozer映射时,类会映射到OrderItem(基类)而不是专门的子类。有没有办法执行此用户doz