获取错误的错误编号

13 投票
3 回答
17295 浏览
提问于 2025-04-16 01:15

我需要从Python中发生的错误中获取错误编号。

比如说,当我尝试通过Paramiko这个包来传输一个文件夹时,代码会捕捉到一个错误:

try:
    sftp.put(local_path,target_path)    
except (IOError,OSError),errno:
    print "Error:",errno

然后我得到的输出是:

Error: [Errno 21] Is a directory

我想利用这个错误编号,继续写一些代码来传输这个文件夹及其内容。

3 个回答

0

还有一个叫做 errno 的包,它可以让你处理错误代码,而不用在代码里到处写那些神秘的数字。你可以在这里查看一个例子: Python 的错误编号和 IOError 之间的关系是否稳定?

4

如果你在说的是 errno.h 的错误编号,你可以从异常对象的 errno 属性中获取这些错误编号,但这只适用于 EnvironmentError(它包括 OSErrorIOErrorWindowsError)。

特别是在 WindowsError 中,你还会看到一个 winerror 属性,它包含一个特定于Windows的错误编号。不过你不常见到这种情况,因为Python直接使用Win32 API的机会相对较少。

16

谢谢你澄清了你的问题。

在Python中,大多数Exception(异常)并没有“错误编号”。有一个例外(开个玩笑),就是HTTPError异常,比如:

import urllib2 
try:
   page = urllib2.urlopen("some url")
except urllib2.HTTPError, err:
   if err.code == 404:
       print "Page not found!"
   else:
       ...

另一个例外(正如bobince提到的)是EnvironmentError

import os
try:
   f=open("hello")
except IOError, err:
   print err
   print err.errno
   print err.strerror
   print err.filename

输出

[Errno 2] No such file or directory: 'hello'
2
No such file or directory
hello

撰写回答