gpt4 book ai didi

python - 将 Flask 上传的文件读取到 pandas 数据框中时找不到文件

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:29 25 4
gpt4 key购买 nike

我正在尝试使用 Python 2.7 在 PythonAnywhere 上创建一个 Flask 网络应用程序,它允许用户上传一个 csv 文件,然后将该文件读入 pandas 数据框进行处理。该程序适用于我尝试过的一个 csv 文件,但不适用于其他任何文件。该程序似乎可以很好地上传文件,但会抛出一条错误消息,提示 #012IOError: File xyz.csv does not exist。这是代码的相关部分:

from flask import Flask, make_response, request, send_file
import pandas as pd

# Initialize the Flask application
app = Flask(__name__)

@app.route('/')
def form():
return """
<html>
<body>
<h1>YDNA Kit Grouping Program</h1>

<form action="/main_program" method="post" enctype="multipart/form-data">
<input type="file" name="input_file" />
<input type="submit" />
</form>
</body>
</html>
"""

@app.route('/main_program', methods=["POST"])
def main_program_view():

# Input file
file = request.files['input_file']
if not file:
return "No file"

# Put input file in dataframe
df = pd.read_csv(file.filename, encoding='cp1252')

我认为问题可能出在代码的最后一行,其中 file.filename 没有给出 pd.read_csv 需要的文件位置信息。但我不知道为什么它适用于一个 csv 文件而不适用于另一个 csv 文件,也不知道如何修复它以便它可以将任何上传的 csv 文件读取到数据框中。

最佳答案

PythonAnywhere 的一名工作人员能够为我指明解决方案的正确方向。 pandas read_csv 函数似乎需要一个路径参数来读取csv 文件。然而,由于所有相当小的 Flask 文件上传都存储在网络服务器的内存中,除非您将它们保存在某个地方,否则它们没有路径。解决方案是将文件保存到 Flask 临时文件位置(或永久文件位置),然后使用保存文件的路径作为 read_csv 函数的路径参数:

import tempfile
tempfile_path = tempfile.NamedTemporaryFile().name
file.save(tempfile_path)
sheet = pd.read_csv(tempfile_path)

关于python - 将 Flask 上传的文件读取到 pandas 数据框中时找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45270431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com