#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)