如果文件不存在,我想在ftp站点上传文件。这是一个更复杂的应用程序的任务,但在这种情况下并不重要。
我的想法是使用FTP.size(filename)
方法检查文件是否存在,如果错误是550(系统找不到指定的文件),则上传文件。
我的(不工作)代码:
from ftplib import *
ftp = FTP("ftp.test.com", "user", "password")
try:
ftp.size("123.zip")
except ftplib.all_errors, e:
if e.errno == 550:
print "UPLOAD"
else:
print str(e)
返回的错误是
Traceback (most recent call last):
File "<pyshell#106>", line 4, in <module>
if e.errno == 550:
AttributeError: 'error_perm' object has no attribute 'errno'
或者是否发生了暂时性错误:
AttributeError: 'error_temp' object has no attribute 'errno'
我发现管理返回代码的唯一解决方案是:
except ftplib.all_errors, e:
if str(e.args[0]).split(" ", 1)[0] == "550":
print "UPLOAD"
else:
print str(e)
但我认为有一个最佳解决方案,因为只有在错误编号是异常消息中的第一个单词时才能正常工作。
提前谢谢!
答案 0 :(得分:1)
我不确切知道该错误的属性,因此您可以做的是在except子句激活时打印dir(e)。然后,您将看到错误的所有属性。几乎从不作为标志失败的是“error.message”,这是一个字符串,所以你可以用它构建if子句。
你会以
之类的结尾try:
ftp.size("123.zip")
except ftplib.all_errors as e:
if e.message == 'message of the error'
print 'UPLOAD'
else:
print str(e)
顺便说一句,消息是执行str(e)时得到的一件事。
答案 1 :(得分:0)