首页 > 解决方案 > Python FTP:从 FTP 读取 .xlsx 作为 pandas 数据帧,而不将 .xlsx 写入磁盘

问题描述

我想从 FTP 连接读取 .xlsx 文件作为 pandas 数据帧,但是我想在内存上执行此操作而不将 .xlsx 写入本地磁盘。

这是我当前的代码:

filename = 'my_excel.xlsx'
localfile = open(filename, 'wb')
ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
ftp.quit()
localfile.close()

在本节之后,我可以从本地磁盘读取 .xlsx 作为 pandas 数据帧,但是我想在缓冲内存中处理它。

我怎样才能做到这一点。谢谢你的帮助=)

标签: pythonpandasftp

解决方案


您可以使用io.BytesIO对象将数据流写入,然后将其读入 pandas。

import pandas as pd
from io import BytesIO

excel_fp = BytesIO()
filename = 'my_excel.xlsx'
ftp.retrbinary('RETR ' + filename, excel_fp.write, 1024)

# reset the cursor to the start of the file stream
excel_fp.seek(0)
df = pd.read_excel(excel_fp)

推荐阅读