python 发送字节_ftp发送python字节流

我想用pythonftplib将一个文件从一个ftp站点发送到另一个ftp站点,以避免文件读/写过程。在

我创建了一个字节流:myfile=BytesIO()

我用retrbinary成功地从ftp site one检索到一个图像文件:

^{pr2}$

我可以将此内存对象保存到常规文件中:fot=open('casab.jpg', 'wb')

fot=myfile.readvalue()

但是我不能用storbinary通过ftp发送这个流。我以为这会奏效:ftp_two.storbinary('STOR magnafoto.jpg', myfile.getvalue())

但没有。我收到一条以'buf=结尾的长错误消息fp.读取(块大小)

AttributeError:“str”对象没有属性“read”

我也尝试过许多荒谬的组合,但都没有成功。顺便说一句,我也很困惑我到底在干什么我要写. 不是吗我要写() ? 在

我也不知道这个缓冲区的用途和要求。我想要的是不是太复杂了?我应该在我的系统中用一个中间的写/读来乒乓文件吗?所有人

编辑:多亏了阿巴内特,我把事情弄清楚了。作为记录,storbinary参数是错误的,并且我的文件.seek在发送流之前需要(0)来“倒带”。这是一个在两个ftp地址之间移动文件的有效代码段,无需中间物理文件写入:import ftplib as ftp

from io import BytesIO

ftp_one=ftp.FTP(address1, user1, pass1)

ftp_two=ftp.FTP(address2, user2, pass2)

myfile=BytesIO()

ftp_one.retrbinary ('RETR imageoldname.jpg', myfile.write)

myfile.seek(0)

ftp_two.storbinary('STOR imagenewname.jpg', myfile)

ftp_one.close()

ftp_two.close()

myfile.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值