获取错误号

2024-06-28 19:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,当试图通过Paramiko包传输目录时,会捕获以下代码中的错误:

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

我得到了输出

Error: [Errno 21] Is a directory

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


Tags: path代码目录paramikotargetputlocal错误
3条回答

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

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

还有^{}包,它允许处理错误代码,而不必处理代码中的幻数。请看下面的示例:Are Python error numbers associated with IOError stable?

谢谢你澄清你的问题。

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所指出的)是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

相关问题 更多 >