代码之家  ›  专栏  ›  技术社区  ›  fixxxer

获取错误的错误号

  •  10
  • fixxxer  · 技术社区  · 15 年前

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

    前任;尝试通过Paramiko包传输目录时,发现以下代码出错:

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

    我得到了结果,

    Error: [Errno 21] Is a directory
    

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

    3 回复  |  直到 11 年前
        1
  •  15
  •   Tim Pietzcker    15 年前

    谢谢你澄清你的问题。

    最多 Exception Python中的没有“错误号”。有一个例外(没有双关语) 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
    
        2
  •  4
  •   bobince    15 年前

    errno.h 错误号码,你可以从 errno 属性,但仅在 EnvironmentError (其中包括 OSError , IOError WindowsError ).

    窗口错误 winerror 具有Windows特定错误号的属性(但是,您并不经常看到其中之一,因为Python很少直接使用win32api。)