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

如何从FTP读取.xlsx文件直接转为pandas dataframe 无需写入本地磁盘

实现方案

核心思路是用io.BytesIO内存缓冲区替代本地文件对象,直接把FTP返回的二进制数据写入内存缓冲区,再传给pandas的read_excel方法读取即可,全程不会生成本地文件。

完整实现代码

import ftplib
import pandas as pd
from io import BytesIO

# 初始化FTP连接(此处替换为你的实际FTP连接信息)
ftp = ftplib.FTP(host='你的FTP地址', user='FTP用户名', passwd='FTP密码')

filename = 'my_excel.xlsx'
# 创建内存缓冲区对象
excel_buffer = BytesIO()

# 从FTP读取二进制数据直接写入内存缓冲区
ftp.retrbinary('RETR ' + filename, excel_buffer.write, 1024)
# 关闭FTP连接
ftp.quit()

# 将缓冲区指针移动到文件起始位置,避免读取为空
excel_buffer.seek(0)

# 直接从内存缓冲区读取为pandas DataFrame
df = pd.read_excel(excel_buffer)

# 处理完成后可手动关闭缓冲区,也可由Python自动回收内存
excel_buffer.close()

关键说明

  • 核心替换逻辑:把原来的本地文件对象替换为BytesIO实例,它在内存中模拟了文件对象的读写行为,和本地文件的接口完全兼容,因此ftp.retrbinary的写入方法可以直接复用
  • 必须加seek(0)操作:数据写入完成后缓冲区的指针会停在文件末尾,直接读取会返回空内容,需要手动把指针移动到文件起始位置
  • 兼容性扩展:该方法支持所有pandas可读取的二进制文件格式(xlsx、xls、csv等),只需要把后续的读取方法替换为对应的pd.read_*即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:04