Python 如何在不保存或使用ORM的情况下上载多个CSV

Python 如何在不保存或使用ORM的情况下上载多个CSV,python,flask,Python,Flask,我希望有一个包含两个上传的网页(inputtype=submit),它接受两个CSV并添加它们的内容。e、 g: # csv1 col1,col2 1,2 3,4 # csv2 col1,col2 10,20 30,40 预期产出: col1,col2 11,22 33,44 但是我现在不关心输出;只需实现两个字段的输入功能,并将其内容存储在某处。我希望这样做而不必保存此文件(即使用file.save),因为这可能会导致多个用户在服务器目录中保存多个文件时出错(我想是吧?)。我也不能真正使

我希望有一个包含两个上传的网页(
input
type=submit),它接受两个CSV并添加它们的内容。e、 g:

# csv1
col1,col2
1,2
3,4

# csv2
col1,col2
10,20
30,40
预期产出:

col1,col2
11,22
33,44
但是我现在不关心输出;只需实现两个
字段的输入功能,并将其内容存储在某处。我希望这样做而不必保存此文件(即使用
file.save
),因为这可能会导致多个用户在服务器目录中保存多个文件时出错(我想是吧?)。我也不能真正使用
models.py
ORM,因为不同的用户可能使用不同的输入列名(例如
c1
c2
,等等),而且列的数量是可变的。但是,我们可以假设两个输入始终具有相同的维度

我能够编写一个路由来处理一个
元素,但我不确定如何处理两个。到目前为止,我得到的是:

app.py([来源])

index.html

<html>
<head>
    <title></title>
</head>
<body>
    <h1>Upload CSV</h1>
    <form action="/transform" method="post" enctype="multipart/form-data">
        <input type="file" name="data_file" />
        <input type="submit" />
    </form>
</body>
</html>

上传CSV

我试图找出如何编写两个路由,每个
输入
字段一个路由?

结果我可以修改
index.html
并使用单个
提交
字段(按钮)提交POST请求

app.py中,将
transform\u view()
更改为:

@app.route('/transform', methods=["POST"])
def transform_view():
    f = request.files['input_file1']
    if not f:
        return "Input file 1 not found!"
    f = request.files['input_file2']
    if not f:
        return "Input file 2 not found!"

    stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
    csv_input = csv.reader(stream)
    csv_contents = [] # this will be a list of lists
    for row in csv_input:
        csv_contents.append(row)

    stream = io.StringIO(g.stream.read().decode("UTF8"), newline=None)
    csv_input = csv.reader(stream)
    csv_contents2 = [] # this will be a list of lists
    for row in csv_input:
        csv_contents2.append(row)

    return redirect("/")
index.html将更改为:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        <h1>Input files (csv)</h1>
        <form action="/transform" method="post" enctype="multipart/form-data">
            <input type="file" name="input_file1" id="input_file1">
            <input type="file" name="input_file2" id="input_file2">
            <br>
            <input type="submit" value="Upload Files" name="submit">
        </form>
    </div>

</body>
</html>

输入文件(csv)

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div>
        <h1>Input files (csv)</h1>
        <form action="/transform" method="post" enctype="multipart/form-data">
            <input type="file" name="input_file1" id="input_file1">
            <input type="file" name="input_file2" id="input_file2">
            <br>
            <input type="submit" value="Upload Files" name="submit">
        </form>
    </div>

</body>
</html>