Python 将Flask上载的文件读取到dataframe时未找到文件

Python 将Flask上载的文件读取到dataframe时未找到文件,python,pandas,flask,pythonanywhere,Python,Pandas,Flask,Pythonanywhere,我正在尝试在Pythonywhere上使用Python2.7创建一个Flask web应用程序,该应用程序允许用户上传一个csv文件,然后将该文件读取到一个数据帧中进行处理。这个程序使用了我尝试过的一个csv文件,但其他文件都没有。该程序似乎可以很好地上传文件,但会抛出一条错误消息,说明#012IOError:文件xyz.csv不存在。以下是代码的相关部分: from flask import Flask, make_response, request, send_file import pan

我正在尝试在Pythonywhere上使用Python2.7创建一个Flask web应用程序,该应用程序允许用户上传一个csv文件,然后将该文件读取到一个数据帧中进行处理。这个程序使用了我尝试过的一个csv文件,但其他文件都没有。该程序似乎可以很好地上传文件,但会抛出一条错误消息,说明
#012IOError:文件xyz.csv不存在
。以下是代码的相关部分:

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')
从烧瓶导入烧瓶,做出响应,请求,发送文件
作为pd进口熊猫
#初始化烧瓶应用程序
app=烧瓶(名称)
@应用程序路径(“/”)
def form():
返回“”
YDNA套件分组程序
"""
@app.route('/main_program',methods=[“POST”])
def主程序视图():
#输入文件
file=request.files['input_file']
如果不是文件:
返回“无文件”
#将输入文件放入数据框
df=pd.read_csv(file.filename,encoding='cp1252')

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

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

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