Python ftplib腐败文件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python ftplib腐败文件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1707字,纯文字阅读大概需要3分钟。
内容图文
我正在使用ftplib下载Python文件,直到最近一切似乎都运行正常.我正在下载文件:
ftpSession = ftplib.FTP(host,username,password)
ftpSession.cwd('rlmfiles')
ftpFileList = filter(lambda x: 'PEDI' in x, ftpSession.nlst())
ftpFileList.sort()
for f in ftpFileList:
tempFile = open(os.path.join(localDirectory,f),'wb')
ftpSession.retrbinary('RETR '+f,tempFile.write)
tempFile.close()
ftpSession.quit()
sys.exit(0)
到目前为止,它正在下载我需要的文件.但是,现在,我正在下载的文件已损坏,只包含长字符串的垃圾ASCII.我知道不是发布到FTP上的文件我将它们拉出来因为我也有一个Perl脚本可以从同一个FTP成功完成.
如果是任何其他信息,下面是调试器在下载文件时在命令提示符中输出的内容:
有没有人在Python的ftplib中使用retrbinary()遇到任何文件内容损坏的问题?
我真的被困/沮丧,并没有遇到任何与腐败有关的事情.任何帮助表示赞赏.
解决方法:
我昨天试图下载文本文件时遇到了这个问题.不确定这是不是你在做什么,但既然你说它有ASCII垃圾,我假设你在文本编辑器中打开它,因为它应该是文本.
如果是这种情况,问题是文件是文本文件,并且您尝试以二进制模式下载它.
您要做的是在ASCII传输模式下检索文件.
tempFile = open(os.path.join(localDirectory,f),'w') # Changed 'wb' to 'w'
ftpSession.retrlines('RETR '+f,tempFile.write) # Changed retrbinary to retrlines
不幸的是,这会从文件中删除所有换行符.呸!
那么你需要再次添加剥离的换行符:
tempFile = open(os.path.join(localDirectory,f),'w')
textLines = []
ftpSession.retrlines('RETR '+f,textLines.append)
tempFile.write('\n'.join(textLines))
这应该可行,但它看起来并不尽如人意.所以一点点清理努力会让我们:
temporaryFile = open(os.path.join(localDirectory, currentFile), 'w')
textLines = []
retrieveCommand = 'RETR '
ftpSession.retrlines(retrieveCommand + currentFile, textLines.append)
temporaryFile.write('\n'.join(textLines))
内容总结
以上是互联网集市为您收集整理的Python ftplib腐败文件?全部内容,希望文章能够帮你解决Python ftplib腐败文件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。