【问题标题】:check ftplib response code检查 ftplib 响应代码
【发布时间】:2013-10-23 14:54:57
【问题描述】:

我有一个正在访问 ftp 服务器的 python 应用程序。我想以类似于 httplib2 的方式捕获几个错误案例:

try: 
    urllib2.urlopen("http://google.com")
except urllib2.HTTPError, e: 
    if e.code == 304: 
        #do 304 stuff
    if e.code == 404: 
        #do 404 stuff
    else: 
        pass 

ftplib.err_perm 中是否存在这样的构造?我知道根据文档可以返回 500-599 的代码,但我在文档中没有看到有关如何访问该值的任何内容。我错过了什么?

【问题讨论】:

    标签: python exception-handling ftp ftplib


    【解决方案1】:

    您可以使用<exception_obj>.args[0] 访问错误响应字符串。它包含像'550 /no-such-dir: No such file or directory' 这样的字符串。

    要获取错误代码(仅前导三个字符),请使用<exception_obj>.args[0][:3]

    例如:

    import ftplib
    ftp = ftplib.FTP('ftp.hq.nasa.gov')
    ftp.login('anonymous', 'user@example.com')
    try:
        ftp.cwd('/no-such-dir')
    except ftplib.error_perm as e:
        print('Error {}'.format(e.args[0][:3]))
    finally:
        ftp.quit()
    

    【讨论】:

    • 这行得通,但是否没有获取代码的 getter 或仅保存代码的对象的属性?
    • @Brad,如果您使用的是python 2.7,则可以使用e.message[:3] 而不是e.args[0][:3]。但它在 Python 3.x 中消失了。没有其他财产。 ftplib.error_perm 继承自 ftplib.Errorftplib.Error 继承自 Exception .. BaseException 不提供任何附加属性/属性。
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多