Python错误捕获和FTP

问题描述:

尝试在Python中获取FTP库的句柄。 :)Python错误捕获和FTP

明白了这一点。

from ftplib import FTP 

server = '127.0.0.1' 
port = '57422' 

print 'FTP Client (' + server + ') port: ' + port 

try: 
    ftp = FTP() 
    ftp.connect(server, port, 3) 
    print 'Connected! Welcome msg is \"' + ftp.getwelcome() + '\"' 

    ftp.cwd('\\') 

    x = '1' 
    currentDir = '' 

except: //***What do I put here?*** 

http://docs.python.org/library/ftplib.html 说,有几个错误代码,我能赶上,但我不能这样做

情况除外:ftplib.all_errors

第二个问题。 :P 如何检索关于错误的更多特定信息?也许错误代码?

非常新的python(一个小时左右)。

你写

except Exception, e: #you can specify type of Exception also 
    print str(e) 
+0

这是太普通,除了'是ftblib.all_errors'一个更正确的答案,同时还涵盖了所有的FTP错误 – guival 2017-02-22 16:34:20

你不想尝试捕捉异常类,除非你要。例外是包罗万象的,而不是赶上抛出的特定类,socket.error

import ftplib 
    import socket <-- 

    server = '127.0.0.1' 
    port = '57422' 

    print 'FTP Client (' + server + ') port: ' + port 

    ftp = ftplib.FTP() 
    try: 
    ftp.connect(server, port, 3) 
    print 'Connected! Welcome msg is \"' + ftp.getwelcome() + '\"' 

    ftp.cwd('\\') 

    x = '1' 
    currentDir = '' 
    except socket.error,e: <-- 
    print 'unable to connect!,%s'%e 

我不能做

except: ftplib.all_errors 

当然不是,那简直是语法错误!例外的元组后

except ftplib.all_errors: 

即结肠:当然,你可以用正确的语法做到这一点。

如何检索有关错误的更具体的 信息?错误代码可能是 ?

except ftplib.all_errors, e: 
    errorcode_string = str(e).split(None, 1)[0] 

例如,'530'现在将是errorcode_string值时,完整的错误消息是'530 Login authentication failed'

您可以在docs找到其他例外情况。

+0

名“FTPLIB”当我尝试你的建议没有被定义(原来的错误是一个错字) 不知道到目前为止该做什么。我以为我已经导入了'命名空间'。 – bobber205 2010-07-03 01:02:54

+2

@bobber,不,你需要添加一个'import ftplib'语句。你没有导入**模块** - 你只从模块中导入了一个班级(这是我个人厌恶的做法,但这是另一个问题);因此,要访问诸如'ftplib.all_errors'的限定名称,您还需要'导入ftplib'。 – 2010-07-03 02:44:52