所以我按照本页面上的文档进行操作: http://docs.python.org/library/ftplib.html#ftplib.FTP.retrbinary
也许我对'retrbinary'的做法感到困惑......我在想它会检索一个二进制文件,然后我可以打开它并写出该文件。
这就是给我带来问题的路线......
ftp.retrbinary('RETR temp.txt',open('temp.txt','wb').write)
我不明白的是我想写出temp.txt,所以我在尝试
ftp.retrbinary('RETR temp.txt',open('temp.txt','wb').write('some new txt'))
但是我遇到了错误,我可以建立FTP连接,执行pwd(),cwd(),重命名()等等。
P.S。我想尽可能地谷歌这一点,谢谢!
答案 0 :(得分:2)
看起来原始代码应该有效,如果您尝试从服务器下载文件。 retrbinary
命令接受您指定的函数对象(即,之后没有()
的函数的名称);每当一段数据(二进制文件)到达时就会调用它。在这种情况下,它会调用您write
编辑的文件的open
方法。这与retrlines
略有不同,因为retrlines
会假设数据是文本文件,并且会适当地转换换行符(但是会损坏,比如图像)。
进一步阅读后,您似乎正在尝试写入服务器上的文件。在这种情况下,您需要传递一个文件对象(或其他具有read
方法的对象,其行为类似于文件),以便由商店函数调用:
ftp.storbinary("STOR test.txt", open("file_on_my_computer.txt", "rb"))
答案 1 :(得分:0)
ftp.retrbinary将第二个参数作为回调函数 它可以直接写入文件对象的方法ieopen('temp.txt','wb')。write 但你改为直接写作
你可以提供自己的回调,并做任何你想做的数据
def mywriter(data):
print data
ftp.retrbinary('RETR temp.txt', mywriter)