簡體   English   中英

如何在不保存文件的情況下將 csv 解析為 Python 中的字典?

[英]How to parse csv into dictionary in Python without saving file?

用戶上傳的 CSV 文件,然后我想將其解析為字典而不實際保存上傳的文件。

我找到了這個參考並嘗試了它https://riptutorial.com/flask/example/32038/parse-csv-file-upload-as-list-of-dictionaries-in-flask-without-saving但它給了我一個錯誤

@app.route('/upload', methods=['POST'])
def fileUpload():

    if request.method == 'POST':
        f = request.files['file']
        fstring = f.read()
        csv_dicts = [{k: v for k, v in row.items()} for row in
                     csv.DictReader(fstring.splitlines(), skipinitialspace=True)]
    return "success"

         <form action = "/upload" method = "POST" enctype="multipart/form-data">
                <input type = "file" name = "file">
                <input type = submit>
            </form>

_csv.Error:迭代器應該返回字符串,而不是字節(文件應該以文本模式打開)

我該如何管理這個錯誤?

您的錯誤表明您的文件已編碼,請對其進行解碼。

fstring = f.read().decode("utf8")

只需將文件對象本身傳遞給 csv dict 閱讀器。 它適用於大多數至少.read方法的類文件對象。

@app.route('/upload', methods=['POST'])
def fileUpload():

    if request.method == 'POST':
        csv_dicts = [{k: v for k, v in row.items()} for row in
                     csv.DictReader(request.files['file'], skipinitialspace=True)]
    return "success"

暫無
暫無

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

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