如何直接将 Pandas 数据帧写入 FTP 上的 Excel 文件
How to write Pandas data frame to Excel file on FTP directly
我想直接从 Pandas 数据框在 FTP 上创建一个 Excel 文件。我已经尝试过此代码,但我从 Excel:
收到“无效的 extension/corrupt 文件”错误
from ftplib import *
from StringIO import StringIO
import pandas
import io
ftp = FTP('ftp.mysite.com')
ftp.login('un', 'pw')
ftp.cwd('/')
buffer = StringIO.StringIO()
your_pandas_df.to_excel(buffer)
text = buffer.getvalue()
bio = io.BytesIO(str.encode(text))
ftp.storbinary('STOR filename.xlsx', bio)
Excel 文件是二进制文件。你不应该尝试使用 StringIO
对象,而应该直接使用 BytesIO
对象。此外,无需使用 getvalue
制作另一个文件副本,只需 seek
上传前缓冲区到开头:
buffer = io.BytesIO()
your_pandas_df.to_excel(buffer)
buffer.seek(0)
ftp.storbinary('STOR filename.xlsx', buffer)
我想直接从 Pandas 数据框在 FTP 上创建一个 Excel 文件。我已经尝试过此代码,但我从 Excel:
收到“无效的 extension/corrupt 文件”错误from ftplib import *
from StringIO import StringIO
import pandas
import io
ftp = FTP('ftp.mysite.com')
ftp.login('un', 'pw')
ftp.cwd('/')
buffer = StringIO.StringIO()
your_pandas_df.to_excel(buffer)
text = buffer.getvalue()
bio = io.BytesIO(str.encode(text))
ftp.storbinary('STOR filename.xlsx', bio)
Excel 文件是二进制文件。你不应该尝试使用 StringIO
对象,而应该直接使用 BytesIO
对象。此外,无需使用 getvalue
制作另一个文件副本,只需 seek
上传前缓冲区到开头:
buffer = io.BytesIO()
your_pandas_df.to_excel(buffer)
buffer.seek(0)
ftp.storbinary('STOR filename.xlsx', buffer)