Как напрямую записать фрейм данных Pandas в файл Excel на FTP

#python #pandas #ftp

#python #pandas #ftp

Вопрос:

Я хочу создать файл Excel на FTP непосредственно из фрейма данных Pandas. Я пробовал этот код, но получаю сообщение об ошибке «недопустимое расширение / поврежденный файл» из Excel:

 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)
 

Комментарии:

1. Можете ли вы опубликовать всю ошибку целиком?

Ответ №1:

Файл Excel — это двоичный файл. Вы никогда не должны пытаться использовать StringIO объект, а непосредственно использовать BytesIO его. Кроме того, нет необходимости создавать еще одну копию файла, используя getvalue только seek буфер в начало перед загрузкой:

 buffer = io.BytesIO()
your_pandas_df.to_excel(buffer)
buffer.seek(0)

ftp.storbinary('STOR filename.xlsx', buffer)