Python 检查ftplib响应代码

Python 检查ftplib响应代码,python,exception-handling,ftp,ftplib,Python,Exception Handling,Ftp,Ftplib,我有一个python应用程序正在访问ftp服务器。我想以类似于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 ftpli

我有一个python应用程序正在访问ftp服务器。我想以类似于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\u perm中是否存在类似的构造?我知道根据文档可以返回500-599的代码,但我在文档中没有看到关于如何访问该值的任何内容。我错过什么了吗

您可以使用
.args[0]
访问错误响应字符串。它包含的字符串类似于
'550/没有这样的目录:没有这样的文件或目录'

要获取错误代码(仅前导三个字符),请使用
.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,如果您使用的是
python2.7
,那么可以使用
e.message[:3]
而不是
e.args[0][:3]
。但它已经在Python3.x中消失了。没有其他财产。继承自
ftplib.Error
ftplib.Error
继承自
Exception
。。不提供任何附加属性/属性。