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)
你不想尝试捕捉异常类,除非你要。例外是包罗万象的,而不是赶上抛出的特定类,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找到其他例外情况。
名“FTPLIB”当我尝试你的建议没有被定义(原来的错误是一个错字) 不知道到目前为止该做什么。我以为我已经导入了'命名空间'。 – bobber205 2010-07-03 01:02:54
@bobber,不,你需要添加一个'import ftplib'语句。你没有导入**模块** - 你只从模块中导入了一个班级(这是我个人厌恶的做法,但这是另一个问题);因此,要访问诸如'ftplib.all_errors'的限定名称,您还需要'导入ftplib'。 – 2010-07-03 02:44:52
这是太普通,除了'是ftblib.all_errors'一个更正确的答案,同时还涵盖了所有的FTP错误 – guival 2017-02-22 16:34:20