一个简单的方法来捕捉异常既从一个FTP服务器可能是:
import ftplib, os
def from_ftp(server, path, data, filename = None):
'''Store the ftp data content to filename (anonymous only)'''
if not filename:
filename = os.path.basename(os.path.realpath(data))
try:
ftp = ftplib.FTP(server)
print(server + ' -> '+ ftp.login())
print(server + ' -> '+ ftp.cwd(path))
with open(filename, 'wb') as out:
print(server + ' -> '+ ftp.retrbinary('RETR ' + data, out.write))
except ftplib.all_errors as e:
print('Ftp fail -> ', e)
return False
return True
def to_ftp(server, path, file_input, file_output = None):
'''Store a file to ftp (anonymous only)'''
if not file_output:
file_output = os.path.basename(os.path.realpath(file_input))
try:
ftp = ftplib.FTP(server)
print(server + ' -> '+ ftp.login())
print(server + ' -> '+ ftp.cwd(path))
with open(file_input, 'rb') as out:
print(server + ' -> '+ ftp.storbinary('STOR ' + file_output, out))
except ftplib.all_errors as e:
print('Ftp fail -> ', e)
return False
return True
我不明白你怎么想告诉我们的。所以'ftplib.all_errors'工作,但它是空的? – dav1d
@ dav1d:是的;(检查我的第二个编辑);并不总是,但大多数时候它有一个空元组! (当它被捕获!!) – RYN
'e'是被捕获的错误的实例,它仅仅意味着没有参数被传递给EOFError。这不是你必须关心的。 – dav1d