Считайте содержимое файла FTP в Python и используйте его одновременно для Pandas и напрямую - PullRequest
2 голосов
/ 10 октября 2019

Я пытаюсь загрузить файл с FTP-сервера в памяти, преобразовать его в кадр данных, но также вернуть в виде байтов. Код следующий:

import io
import pandas as pd
from ftplib import FTP

ftp_connection.cwd(ftp_folder)
download_file = io.BytesIO()
ftp_connection.retrbinary('RETR ' + str(file_name), download_file.write)
download_file.seek(0)
file_to_process = pd.read_csv(download_file, engine='python')

После поиска в переполнении стека было предложено просто прочитать поток io:

download_file.read()
ValueError: I/O operation on closed file.

Не уверен, что делать дальше, не записывая файл куда-нибудьи снова читаем его как байты.

1 Ответ

1 голос
/ 10 октября 2019

read_csv вероятно закрывает "файл". Так что прочитайте, прежде чем позвонить read_csv:

download_file.seek(0)
contents = download_file.read()
download_file.seek(0)
file_to_process = pd.read_csv(download_file, engine='python')
...