检查ftplib响应代码

时间:2013-10-23 14:54:58

标签: python exception-handling ftp ftplib

我有一个访问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的代码,但我在文档中没有看到有关如何访问该值的任何内容。我错过了什么?

1 个答案:

答案 0 :(得分: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()