[Python] Uploading and reading a CSV file with Flask

Discussão em 'Python' iniciado por Stack, Março 7, 2025.

  1. Stack

    Stack Membro Participativo

    I'm currently in the process of making a program to upload and read csv files. I'm throwing a key error when submitting a file to be uploaded and can't really seem to figure out why and was hoping for some help. It uploaded and saved the file before I tried adding the read file functionality but after that, it started having issues. The error is saying that 'filename' is a key error even though it seemed to work fine before I tried reading the file. Help or leading me down the right path would be greatly appreciated. Thanks so much!

    Views.py

    from flask import render_template, request, redirect
    from app import app
    import os
    import csv


    @app.route('/', methods=["GET", "POST"])
    def index():
    data = []
    if request.method == 'POST':
    if request.files:
    uploaded_file = request.files['filename'] # This line uses the same variable and worked fine
    uploaded_file.save(os.path.join(app.config['FILE_UPLOADS'], uploaded_file.filename))
    f = request.form['filename'] # This is the line throwing the error
    with open(f) as file:
    csv_file = csv.reader(file)
    for row in csv_file:
    data.append(row)
    return redirect(request.url)
    return render_template('index.html', data=data)


    @app.route('/help')
    def help():
    return render_template('help.html')

    app.config['FILE_UPLOADS'] = "C:\\Users\\Zachary\\Documents\\VSCode_Projects\\monday_webapp\\app\\static\\file\\uploads"


    Index.html

    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block body %}

    <div class="jumbotron">
    <h1 style='text-align: center'>Zach's Web Application</h1>
    </div>
    <div>
    <p class="lead">Upload a csv file to view its data.</p>
    <form method="POST" enctype="multipart/form-data" action="/">
    <input type="file" id="myFile" name="filename" accept=".csv">
    <input type="submit">
    </form>
    </div>
    <div>
    {{ data }}
    </div>
    <div>

    {% endblock %}

    Continue reading...

Compartilhe esta Página