【问题标题】:Upload CSV file using Python Flask and process it使用 Python Flask 上传 CSV 文件并进行处理
【发布时间】:2019-03-20 17:07:42
【问题描述】:

我有以下代码可以使用 Python FLASK 上传 CSV 文件。

from flask_restful import Resource
import pandas as pd

ROOT_PATH = os.path.dirname(os.path.abspath(__file__))

class UploadCSV(Resource):

    def post(self):
        files = request.files['file']
        files.save(os.path.join(ROOT_PATH,files.filename))
        data = pd.read_csv(os.path.join(ROOT_PATH,files.filename))
        print(data)

api.add_resource(UploadCSV, '/v1/upload')

if __name__ == '__main__':
    app.run(host='localhost', debug=True, port=5000)

此代码运行良好,我可以成功上传 CSV 文件并使用 pandas 数据框读取它。但我将 csv 保存在本地文件系统中并读取它。

我尝试过如下阅读 -

files = request.files['file']
files.read()

得到的结果是字节格式,但我需要字典格式。所以我使用 pandas 数据框来读取它,然后我将它转换成我的格式的自定义字典。

是否可以即时读取 CSV 文件而不将其写入本地文件系统?或者我们可以使用 Python Flask Restful 实现的任何等效方式?

【问题讨论】:

标签: python csv python-3.6 flask-restful


【解决方案1】:

files 变量(命名不恰当,因为它是一个文件)包含一个 werkzeug.datastructures.FileStorage 对象。这是一个类似文件的对象(包含read() 方法),因此可以直接将其用作pandas.read_csv() 的输入,如pandas documentation 所示。

因此,不保存到磁盘的解决方案很简单:

class UploadCSV(Resource):

    def post(self):
        file = request.files['file']
        data = pd.read_csv(file)
        print(data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多