使用storbinary进行部分FTP上传
我正在通过FTP把一个XML文件发送到服务器,但文件大小53KB的部分只发送了48KB就停了。
我的代码是:
if __name__ == '__main__':
ftp = ftplib.FTP("IP")
ftp.login(user = 'NAME', passwd = 'PASS')
ftp.cwd('/web/content/tree/_demo')
a.write('<root>\n' + DirXML(dirname) + '\n</root>')
f=open(outputname,'rb')
ftp.storbinary('STOR '+os.path.basename(outputname),f)
f.close()
ftp.quit()
这个问题和这个链接里的情况一样:用Python的storbinary进行部分上传。不过,这个链接并没有给出解决办法。通过FTP客户端发送文件是没问题的,通过Python解释器也可以,但通过脚本发送就不行。
补充说明:没有抛出任何异常,整个过程看起来都正常,但我查看上传的文件时发现它的末尾被截断了。如果我去掉FTP的部分,直接把文件导出到我的本地电脑上,文件就能正常生成。至于缩进问题,只是我格式弄得不好。
1 个回答
0
你在用 storlines
,其实应该用 storbinary
。
前者会进行换行符的转换。
storbinary
这个 ftplib 的代码在传输之前会先执行 TYPE I
,这样可以确保传输模式设置为图像模式(也就是二进制模式)。
另外,确保你要传输的文件在开始传输之前已经被刷新或关闭。因为通过 write
写入的数据,可能在 ftp 库打开文件时还没有写入到磁盘上。