You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将ftplib的retrbinary输出存储至文件对象

Python ftplib retrbinary输出写入内存文件对象实现方案

可以实现,借助Python标准库io模块的BytesIO类即可完成,无需引入第三方依赖,完全适配Lambda无本地磁盘写入的使用场景,也满足你仅使用ftplib、不引入paramiko的要求。

完整实现代码

import ftplib
import io
import boto3

# 初始化FTP连接
server = ftplib.FTP()
server.connect("你的FTP地址", 21)
server.login("FTP用户名", "FTP密码")

# 创建内存文件对象
file_obj = io.BytesIO()
# 直接将FTP返回的二进制内容写入内存对象
server.retrbinary('RETR test.xlsx', file_obj.write)
# 重置文件指针到开头,后续读取内容时才会从头部开始
file_obj.seek(0)
server.quit()

# 直接使用内存对象上传到S3,无需写入本地磁盘
s3 = boto3.client('s3')
s3.upload_fileobj(file_obj, '你的S3桶名', 'S3端存储路径/test.xlsx')

补充说明

  • BytesIO是Python标准库提供的内存缓存类,完全模拟文件对象的行为,它的write方法和本地文件对象的write方法调用逻辑完全一致,可直接作为retrbinary的回调参数使用
  • 写入完成后必须调用file_obj.seek(0)重置指针位置,否则后续读取(比如上传S3)时会从内容末尾开始读,拿到空数据
  • 整个流程完全不涉及本地磁盘写入,适配Lambda运行环境的限制

内容的提问来源于stack exchange,提问作者Ludwig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:15:02