获取错误的错误号

时间:2010-07-13 20:45:02

标签: python error-handling paramiko

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

实施例;当尝试通过Paramiko包传输目录时,这段代码会出现错误:

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

我得到了输出,

Error: [Errno 21] Is a directory

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

3 个答案:

答案 0 :(得分:13)

感谢您澄清问题。

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 s:

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

答案 1 :(得分:4)

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

特别是在WindowsError上,您还将获得具有Windows特定错误编号的winerror属性。 (你不经常看到其中的一个,因为Python很少直接使用Win32 API。)

答案 2 :(得分:0)

还有errno包,它允许使用错误代码而不必处理代码中的幻数。请在此处查看示例:Are Python error numbers associated with IOError stable?