12

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

前任; 尝试通过 Paramiko 包传输目录时,以下代码捕获了一个错误:

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

我得到了输出,

Error: [Errno 21] Is a directory

我想利用错误号进入更多代码来传输目录和目录内容。

4

3 回答 3

15

感谢您澄清您的问题。

Python 中的大多数Exceptions 没有“错误编号”。一个例外(没有双关语)是HTTPError例外,例如:

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

另一个例外(如 bobince 所述)是EnvironmentErrors:

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
于 2010-07-13T21:08:19.603 回答
4

如果您正在谈论errno.h错误编号,您可以从errno异常对象的属性中获取它们,但只能在EnvironmentError(包括OSError,IOErrorWindowsError)上。

具体来说,WindowsError您还将获得一个winerror带有特定于 Windows 的错误号的属性。(不过,你不会经常看到其中之一,因为 Python 很少直接使用 Win32 API。)

于 2010-07-13T21:17:43.480 回答
0

还有一个errno包,它允许使用错误代码而不必处理代码中的幻数。在此处查看示例:与 IOError 相关的 Python 错误编号是否稳定?

于 2016-05-03T09:57:45.183 回答