我需要从 Python 中发生的错误中获取错误号。
前任; 尝试通过 Paramiko 包传输目录时,以下代码捕获了一个错误:
try:
sftp.put(local_path,target_path)
except (IOError,OSError),errno:
print "Error:",errno
我得到了输出,
Error: [Errno 21] Is a directory
我想利用错误号进入更多代码来传输目录和目录内容。
我需要从 Python 中发生的错误中获取错误号。
前任; 尝试通过 Paramiko 包传输目录时,以下代码捕获了一个错误:
try:
sftp.put(local_path,target_path)
except (IOError,OSError),errno:
print "Error:",errno
我得到了输出,
Error: [Errno 21] Is a directory
我想利用错误号进入更多代码来传输目录和目录内容。
感谢您澄清您的问题。
Python 中的大多数Exception
s 没有“错误编号”。一个例外(没有双关语)是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
如果您正在谈论errno.h
错误编号,您可以从errno
异常对象的属性中获取它们,但只能在EnvironmentError
(包括OSError
,IOError
和WindowsError
)上。
具体来说,WindowsError
您还将获得一个winerror
带有特定于 Windows 的错误号的属性。(不过,你不会经常看到其中之一,因为 Python 很少直接使用 Win32 API。)
还有一个errno
包,它允许使用错误代码而不必处理代码中的幻数。在此处查看示例:与 IOError 相关的 Python 错误编号是否稳定?