在 Python 中读取 FTP 文件内容并同时用于 Pandas 和

Read FTP file contents in Python and use it at the same time for Pandas and directly(在 Python 中读取 FTP 文件内容并同时用于 Pandas 和直接)

本文介绍了在 Python 中读取 FTP 文件内容并同时用于 Pandas 和直接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从内存中的 FTP 服务器下载文件,将其转换为数据帧,但也将其作为字节返回.代码如下:

I am trying to download a file from an FTP server in memory, transform it to a dataframe but also return it as bytes. Code as follows:

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

在 Stack Overflow 上搜索后,建议只读取 io 流:

After searching on Stack Overflow, the suggestion was to just read the io stream:

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

不确定接下来要尝试什么,没有将文件写入某处并以字节形式再次读取.

Not sure what to try next, without writing the file somewhere and reading it again as bytes.

推荐答案

read_csv 可能会关闭文件".所以在调用 read_csv 之前请阅读它:

read_csv probably closes the "file". So read it before you call read_csv:

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

这篇关于在 Python 中读取 FTP 文件内容并同时用于 Pandas 和直接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:在 Python 中读取 FTP 文件内容并同时用于 Pandas 和