簡體   English   中英

使用Python Flask上傳CSV文件並進行處理

[英]Upload CSV file using Python Flask and process it

我有以下代碼使用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 dataframe讀取它。 但是我將csv保存在本地文件系統中並讀取它。

我嘗試過如下閱讀 -

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

獲得的結果是字節格式,但我需要它以字典的格式。 所以我使用pandas數據幀來讀取它,然后我將其轉換為我的格式的自定義字典。

是否可以在不將其寫入本地文件系統的情況下即時讀取CSV文件? 或者我們可以使用Python Flask Restful實現的任何等效方式?

(由於它是一個文件而不太恰當地命名) files變量包含一個werkzeug.datastructures.FileStorage對象。 這是一個類似於對象的文件(包含一個read()方法),因此可以直接將它用作pandas.read_csv()輸入,如pandas文檔中所示

因此,不保存到磁盤的解決方案就像:

class UploadCSV(Resource):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM