获取错误的错误编号
我需要从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
(它包括 OSError
、IOError
和 WindowsError
)。
特别是在 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