在python中通过FTP写入文件

2024-04-29 07:10:59 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我遵循了这一页上的文档: 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连接,do pwd(),cwd(),rename()等等

另外,我尽量用谷歌搜索,谢谢!


Tags: 文件文档orgtxthttpdocsftpopen
2条回答

retrbinary将第二个参数作为回调函数 它可以直接写入文件对象的方法,即open('temp.txt','wb').write 但是你直接打电话给write

您可以提供自己的回调,并对数据执行任何操作

def mywriter(data):
    print data
ftp.retrbinary('RETR temp.txt', mywriter)

如果您试图从服务器下载文件,那么原始代码应该可以工作。retrbinary命令接受您指定的函数对象(即后面没有()的函数名);每当数据(二进制文件)到达时,就会调用它。在这种情况下,它将调用您所编辑的文件的write方法。这与retrlines略有不同,因为retrlines将假定数据是文本文件,并将适当地转换换行符(但会损坏图像)。

随着进一步的阅读,你似乎正在试图写入服务器上的文件。在这种情况下,您需要传递一个文件对象(或其他具有类似于文件的read方法的对象)以由store函数调用:

ftp.storbinary("STOR test.txt", open("file_on_my_computer.txt", "rb"))

相关问题 更多 >