我需要从Python中发生的错误中获取错误号。
实施例;当尝试通过Paramiko包传输目录时,这段代码会出现错误:
try:
sftp.put(local_path,target_path)
except (IOError,OSError),errno:
print "Error:",errno
我得到了输出,
Error: [Errno 21] Is a directory
我想利用错误号进入更多代码来传输目录和目录内容。
答案 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
上找到它们,IOError
和WindowsError
)。
特别是在WindowsError
上,您还将获得具有Windows特定错误编号的winerror
属性。 (你不经常看到其中的一个,因为Python很少直接使用Win32 API。)
答案 2 :(得分:0)
还有errno
包,它允许使用错误代码而不必处理代码中的幻数。请在此处查看示例:Are Python error numbers associated with IOError stable?