Hướng dẫn python flask read csv file - python flask đọc tệp csv

Tôi hiện đang trong quá trình tạo một chương trình để tải lên và đọc các tệp CSV. Tôi đang ném một lỗi chính khi gửi một tệp sẽ được tải lên và dường như không thể tìm ra lý do tại sao và hy vọng cho một số trợ giúp. Nó đã tải lên và lưu tệp trước khi tôi thử thêm chức năng đọc tệp nhưng sau đó, nó bắt đầu gặp sự cố. Lỗi là nói rằng 'tên tệp' là một lỗi chính mặc dù nó có vẻ hoạt động tốt trước khi tôi thử đọc tệp. Giúp đỡ hoặc dẫn tôi xuống con đường đúng sẽ được đánh giá rất cao. Cám ơn rất nhiều!

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 %}

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}

hỏi ngày 27 tháng 1 năm 2021 lúc 4:00Jan 27, 2021 at 4:00

Hướng dẫn python flask read csv file - python flask đọc tệp csv

2

Trong flask request.form ["input_name"] được sử dụng để lấy dữ liệu đầu vào, nhưng không phải cho đầu vào ____10 có thể truy cập được thông qua request.files ["input_name"], luôn luôn sử dụng

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

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
1 trong biểu mẫu. Bạn có thể nhận thêm thông tin trong tài liệu chính thức: https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/request.form["input_name"] is used to get the input data, but not for input
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block body %}

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
0 which are accesible through request.files["input_name"], always using
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block body %}

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
1 in the form. You can get more info in the oficial documentation: https://flask.palletsprojects.com/en/1.1.x/patterns/fileuploads/

Mặt khác, request.files ['Tên tệp'] là loại tệp, hàm

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

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
2 mong đợi STR, byte hoặc đối tượng OS.Path giống như FileStorage.request.files['filename'] is a FileStorage type, the function
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block body %}

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
2 expects str, bytes or os.PathLike object, not FileStorage.

Mã sau sẽ hoạt động:

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
            filepath = os.path.join(app.config['FILE_UPLOADS'], uploaded_file.filename)
            uploaded_file.save(filepath)
            with open(filepath) 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"

Đã trả lời ngày 27 tháng 1 năm 2021 lúc 21:58Jan 27, 2021 at 21:58

RubenrubenRuben

Huy hiệu đồng 13488 bronze badges

3

Để phát triển bất kỳ dữ liệu ứng dụng web học máy được yêu cầu. Trong bài đăng này, tôi sẽ chỉ cho bạn cách tải lên và hiển thị các tệp CSV trong bình bảng HTML. Bằng cách đọc bài đăng này, bạn cũng sẽ có thể hiểu cách tải lên và đọc tệp Excel trong bình Python. Cả hai đều giống nhau. Machine Learning web application data is must required. in this post, I will show you how to upload and display CSV files in HTML table Flask. By reading this post you will also be able to understand how to upload and read excel file in python flask. Both are similar.

Lưu ý: Nếu bạn là người mới trong bình, tôi đã viết một số hướng dẫn cơ bản cho bình, bạn chắc chắn có thể đọc những thứ đó.

Phải đọc:

  • Hướng dẫn dành cho người mới bắt đầu về khung ứng dụng web Python
  • Thêm HTML và CSS trong ứng dụng web Flask

Tôi sẽ chia hướng dẫn này thành hai phần:

  1. Phần1: Đọc và hiển thị tệp CSV trong bình
  2. Phần 2: Tải lên và hiển thị tệp CSV trong bình

Trong phần này, chúng tôi sẽ đọc một tệp CSV bên trong mã bình và hiển thị tệp CSV trên trang web dưới dạng bảng HTML. Tệp CSV có thể là bất kỳ tệp nào được lưu trữ trong máy tính của bạn.

Chúng tôi muốn có một nút trên trang HTML chỉ mục của chúng tôi (index_read_and_show_data.html). Nếu chúng tôi nhấp vào nút đó, tệp CSV sẽ hiển thị trên một trang khác (show_data.html).

index_read_and_show_data.html (trang Index) (index page)




    
  
  
    

Flask GET, POST tutorial

Display csv file in html table Flask

Hướng dẫn python flask read csv file - python flask đọc tệp csv

Ở đây trong Chỉ mục này mã HTML:

  • Dòng 10: Trong trang chủ của ứng dụng Flask của chúng tôi, chúng tôi đang tạo một nút gửi có tên là Hiển thị CSV CSVShow CSV
  • Nếu chúng tôi nhấp vào nút này, một trang mới sẽ mở có tên 127.0.0.1:5000/show_data127.0.0.1:5000/show_data

Bây giờ, hãy để viết mã phụ trợ bình của chúng tôi: Flask backend code:

flask_get_post_read_csv.py

from flask import Flask, render_template
import pandas as pd

#*** Backend operation
# Read csv file in python_ flask
df = pd.read_csv('data/comment.csv')

# Read excel file in python_ flask
# df = pd.read_excel('data/comment.xlsx')

# WSGI Application
# Configure template folder name
# The default folder name should be "templates" else need to mention custom folder name for template path
# The default folder name for static files should be "static" else need to mention custom folder for static path
app = Flask(__name__, template_folder='templateFiles', static_folder='staticFiles')

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

@app.route('/show_data',  methods=("POST", "GET"))
def showData():
    # Convert pandas dataframe to html table flask
    df_html = df.to_html()
    return render_template('show_csv_data.html', data=df_html)

if __name__=='__main__':
    app.run(debug = True)

Ở đây trong mã này:

  • Dòng 6: Chúng tôi đang đọc tệp CSV mà chúng tôi sẽ hiển thị trong trang web
  • Dòng 9: Nhận xét, bạn có thể sử dụng dòng này nếu bạn muốn đọc tệp Excel thay vì CSVCommented, you can use this line if you want to read excel file instead of CSV
  • Dòng 15: Định cấu hình bình ngược bình cho mẫu tùy chỉnh và đường dẫn tĩnh
  • Dòng 19: Tải chỉ số index_READ_AND_SHOW_DATA.HTML, là trang chủ [
    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block body %}
    
    

    Zach's Web Application

    Upload a csv file to view its data.

    {{ data }}
    {% endblock %}
    3]
  • Dòng 24: Chuyển đổi gấu trúc DataFrame thành bảng HTML. Nếu bạn không chuyển đổi, dữ liệu CSV của bạn sẽ hiển thị dưới dạng chuỗi không phải là bảng HTML
  • Dòng 25: Hiển thị dữ liệu được chuyển đổi thành 127.0.0.1:5000/show_data [
    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block body %}
    
    

    Zach's Web Application

    Upload a csv file to view its data.

    {{ data }}
    {% endblock %}
    4] với tệp HTML có tên là Show Show_csv_data.html,

Trong dòng 25, chúng tôi đang lưu trữ bảng HTML được chuyển đổi của chúng tôi trong một biến có tên là Data Data_Var. Vì vậy, bây giờ chúng ta cần tạo một tệp HTML có tên là SHOW_CSV_DATA.html, nơi chúng ta cần gọi biến đó là biến dữ liệu của data_var để hiển thị tệp CSV của chúng ta (bảng HTML được chuyển đổi) ].data_var” variable to display our CSV file (converted HTML table) [return render_template(‘show_csv_data.html’, data=df_html)].

show_csv_data.html




    
  
  
    

Flask GET, POST tutorial

Display csv file in html table Flask

{{ data_var|safe }}

Trong mã HTML này ở dòng 10, chúng tôi đang gọi biến đó là biến Data Data_Var để hiển thị dữ liệu của chúng tôi. Lưu ý: Đây là cách của mẫu Jinja để giao tiếp giữa mã phụ trợ và mã Frontend.Jinja Template to communicate between backend and frontend codes.

Đầu ra cuối cùng tại trình duyệt

Tải lên và hiển thị tệp CSV trong bình

Trong Phần 1, chúng tôi chỉ đọc một tệp CSV từ thư mục cục bộ của chúng tôi. Nếu chúng ta muốn sử dụng dữ liệu khác nhau, chúng ta phải thay đổi mã bình bên trong (pd.read_csv ()/ pd.read_excel ()). Đây không phải là cách chính xác trong khi tạo và ứng dụng web. Trang web của chúng tôi phải hỗ trợ tính năng dữ liệu tải lên.

Bây giờ, hãy để liệt kê những gì chúng ta muốn đạt được với ứng dụng web này:

  • Tải lên tính năng ở phía trước
  • Khi dữ liệu được tải lên thành công, nó sẽ hiển thị thông báo
  • Phải có nút riêng, sau khi nhấp vào dữ liệu CSV hiển thị dưới dạng bảng HTML trong trang khác nhau

Vì vậy, bây giờ hãy để tạo ra trang chủ của ứng dụng Flask của chúng tôi. Tôi đang đặt tên cho tệp HTML này dưới dạng chỉ in index_upload_and_show_data.html

index_upload_and_show_data.html




    
  
  
    

Flask GET, POST tutorial

Show CSV file in html using FLASK


Choose csv file to upload

Ở đây trong mã này:

  • Dòng 6: Chúng tôi đang đọc tệp CSV mà chúng tôi sẽ hiển thị trong trang web we are adding data upload form functionality
  • Dòng 9: Nhận xét, bạn có thể sử dụng dòng này nếu bạn muốn đọc tệp Excel thay vì CSVwe are adding a button to show data in different page (http://127.0.0.1:5000/show_data)
  • Dòng 15: Định cấu hình bình ngược bình cho mẫu tùy chỉnh và đường dẫn tĩnh Adding a string “Choose csv file to upload” in blue color, it should change to green color once data is uploaded successfully

Hướng dẫn python flask read csv file - python flask đọc tệp csv

Dòng 19: Tải chỉ số index_READ_AND_SHOW_DATA.HTML, là trang chủ [

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

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
3]Upload file” the message “Choose csv file to upload” should change to “file uploaded successfully” in green color. To do this we need to write another HTML file. I am naming this HTML file as “index_upload_and_show_data_page2.html“

index_upload_and_show_data_page2.html




    
  
  
    

Flask GET, POST tutorial

Show CSV file in html using FLASK


file uploaded successfully

Dòng 24: Chuyển đổi gấu trúc DataFrame thành bảng HTML. Nếu bạn không chuyển đổi, dữ liệu CSV của bạn sẽ hiển thị dưới dạng chuỗi không phải là bảng HTML

Dòng 25: Hiển thị dữ liệu được chuyển đổi thành 127.0.0.1:5000/show_data [

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

Zach's Web Application

Upload a csv file to view its data.

{{ data }}
{% endblock %}
4] với tệp HTML có tên là Show Show_csv_data.html, In line 11 I have mentioned accepted file = CSV you can change it to .xlsx, if you want to upload and read excel file in python flask

Hướng dẫn python flask read csv file - python flask đọc tệp csv

Trong dòng 25, chúng tôi đang lưu trữ bảng HTML được chuyển đổi của chúng tôi trong một biến có tên là Data Data_Var. Vì vậy, bây giờ chúng ta cần tạo một tệp HTML có tên là SHOW_CSV_DATA.html, nơi chúng ta cần gọi biến đó là biến dữ liệu của data_var để hiển thị tệp CSV của chúng ta (bảng HTML được chuyển đổi) ].

flask_get_post_upload_read_csv.py

from flask import Flask, render_template, request, session
import pandas as pd
import os
from werkzeug.utils import secure_filename

#*** Flask configuration

# Define folder to save uploaded files to process further
UPLOAD_FOLDER = os.path.join('staticFiles', 'uploads')

# Define allowed files (for this example I want only csv file)
ALLOWED_EXTENSIONS = {'csv'}

app = Flask(__name__, template_folder='templateFiles', static_folder='staticFiles')
# Configure upload file path flask
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# Define secret key to enable session
app.secret_key = 'This is your secret key to utilize session in Flask'


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

@app.route('/',  methods=("POST", "GET"))
def uploadFile():
    if request.method == 'POST':
        # upload file flask
        uploaded_df = request.files['uploaded-file']

        # Extracting uploaded data file name
        data_filename = secure_filename(uploaded_df.filename)

        # flask upload file to database (defined uploaded folder in static path)
        uploaded_df.save(os.path.join(app.config['UPLOAD_FOLDER'], data_filename))

        # Storing uploaded file path in flask session
        session['uploaded_data_file_path'] = os.path.join(app.config['UPLOAD_FOLDER'], data_filename)

        return render_template('index_upload_and_show_data_page2.html')

@app.route('/show_data')
def showData():
    # Retrieving uploaded file path from session
    data_file_path = session.get('uploaded_data_file_path', None)

    # read csv file in python flask (reading uploaded csv file from uploaded server location)
    uploaded_df = pd.read_csv(data_file_path)

    # pandas dataframe to html table flask
    uploaded_df_html = uploaded_df.to_html()
    return render_template('show_csv_data.html', data_var = uploaded_df_html)

if __name__=='__main__':
    app.run(debug = True)

Ở đây trong mã này:

  • Dòng 6: Chúng tôi đang đọc tệp CSV mà chúng tôi sẽ hiển thị trong trang web
  • Dòng 9: Nhận xét, bạn có thể sử dụng dòng này nếu bạn muốn đọc tệp Excel thay vì CSV
  • Dòng 15: Định cấu hình bình ngược bình cho mẫu tùy chỉnh và đường dẫn tĩnh
  • Dòng 19: Tải chỉ số index_READ_AND_SHOW_DATA.HTML, là trang chủ [
    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block body %}
    
    

    Zach's Web Application

    Upload a csv file to view its data.

    {{ data }}
    {% endblock %}
    3]
  • Dòng 24: Chuyển đổi gấu trúc DataFrame thành bảng HTML. Nếu bạn không chuyển đổi, dữ liệu CSV của bạn sẽ hiển thị dưới dạng chuỗi không phải là bảng HTML
  • Dòng 25: Hiển thị dữ liệu được chuyển đổi thành 127.0.0.1:5000/show_data [
    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block body %}
    
    

    Zach's Web Application

    Upload a csv file to view its data.

    {{ data }}
    {% endblock %}
    4] với tệp HTML có tên là Show Show_csv_data.html,
  • Trong dòng 25, chúng tôi đang lưu trữ bảng HTML được chuyển đổi của chúng tôi trong một biến có tên là Data Data_Var. Vì vậy, bây giờ chúng ta cần tạo một tệp HTML có tên là SHOW_CSV_DATA.html, nơi chúng ta cần gọi biến đó là biến dữ liệu của data_var để hiển thị tệp CSV của chúng ta (bảng HTML được chuyển đổi) ].
  • Trong mã HTML này ở dòng 10, chúng tôi đang gọi biến đó là biến Data Data_Var để hiển thị dữ liệu của chúng tôi. Lưu ý: Đây là cách của mẫu Jinja để giao tiếp giữa mã phụ trợ và mã Frontend.
  • Đầu ra cuối cùng tại trình duyệt
  • Tải lên và hiển thị tệp CSV trong bình
  • Dòng 46: Nhập lại đường dẫn tệp đã tải lên từ phiên
  • Dòng 49: Vì chúng tôi biết đường dẫn tệp đầy đủ của dữ liệu đã tải lên, bây giờ chúng tôi có thể đọc tệp CSV này bằng cách sử dụng gấu trúc
  • Dòng 52: Để hiển thị tệp CSV dưới dạng bảng trong HTML, chúng ta cần chuyển đổi bản dữ liệu pandas này thành bảng HTML
  • Dòng 53: Hiển thị bảng HTML (dữ liệu CSV được chuyển đổi) trong chương trình show_csv_data.html. Lưu ý vị trí trang để hiển thị dữ liệu sẽ là 127.0.0.1:5000/show_data, theo dòng 43 [@app.route (‘/show_data,)]

Trong dòng 53, chúng tôi đang lưu trữ bảng HTML được chuyển đổi của chúng tôi trong một biến có tên là Data Data_Var. Vì vậy, bây giờ chúng ta cần tạo một tệp HTML có tên là Show Show_CSV_Data.html, nơi chúng ta cần gọi biến đó là biến dữ liệu của Data_var để hiển thị tệp CSV của chúng ta (bảng HTML được chuyển đổi).

Trước khi chạy mã bình của chúng tôi, chúng tôi cần tạo thư mục tải lên như được đề cập trong dòng 9. Tôi đang tạo một thư mục có tên là tải lên trên các thư mục tĩnh của chúng tôi. Bạn tạo thư mục với bất kỳ tên nào. I am creating a folder named “uploads” inside our static folder “staticFiles”. You create the folder with any name.

show_csv_data.html




    
  
  
    

Flask GET, POST tutorial

Display csv file in html table Flask

{{ data_var|safe }}

Bây giờ, hãy để Lừa chạy mã bình của chúng tôi

Sự kết luận

Trong bài đăng này, tôi đã chỉ cho bạn cách bạn có thể tải lên và hiển thị tệp CSV trong bình HTML Bàn Python. Bằng cách đọc bài đăng này, bạn cũng có thể tải lên và đọc tệp Excel trong bình Python.

Trong bài đăng này, tôi đã cho bạn một điểm bắt đầu, cách bạn có thể sử dụng phiên để lưu trữ bất kỳ biến số hoặc đường dẫn dữ liệu nào trong một số chức năng và truy xuất đường dẫn đó trong các chức năng khác nhau.

Tôi cũng đã chỉ cho bạn cách bạn có thể sử dụng Phương thức Post Flask để tải lên và hiển thị tệp CSV trên trang web được phát triển bởi Flask với Python.Flask GET POST method to upload and display csv file on web page developed by Flask with Python.

Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào liên quan đến bài đăng này, vui lòng cho tôi biết trong phần bình luận bên dưới

Hướng dẫn python flask read csv file - python flask đọc tệp csv

Xin chào, tôi là Anindya Naskar, kỹ sư khoa học dữ liệu. Tôi đã tạo trang web này để cho bạn thấy những gì tôi tin là cách tốt nhất có thể để bắt đầu trong lĩnh vực khoa học dữ liệu.

Làm cách nào để đọc tệp CSV trong bình?

Tạo biểu mẫu tải lên tệp ..
Tải lên CSV bằng bình ..
Phân tích dữ liệu tệp CSV ..
Kết nối với cơ sở dữ liệu ..
Chèn hàng vào một bảng cụ thể trong cơ sở dữ liệu ..

Làm cách nào để hiển thị tệp CSV trong bình HTML?

Trong bài viết này, chúng tôi sẽ chuyển đổi tệp CSV thành bảng HTML bằng cách sử dụng Python Pandas và Flask Framework ..
Tệp CSV mẫu:.
Bước 1: Tạo một môi trường.....
Bước 2: Kích hoạt môi trường ..
Bước 3: Cài đặt bình và gấu trúc ..
Bước 1: Tạo thư mục 'App.py' và viết mã được đưa ra dưới đây ..

Làm cách nào để đọc tệp CSV trong Python?

Đọc một tệp CSV bằng Python..
Sử dụng thư viện CSV.Nhập CSV với Open ("./ Bwq.csv", 'r') dưới dạng tệp: csvreader = csv.reader (tệp) cho hàng trong csvreader: in (hàng) ở đây chúng tôi đang nhập thư viện CSV để sử dụng.....
Sử dụng thư viện Pandas.Nhập gấu trúc dưới dạng dữ liệu PD = pd.Read_CSV ("BWQ.CSV") dữ liệu ..

Làm cách nào để hiển thị tệp CSV trong bảng HTML?

Hiển thị bất kỳ tệp CSV nào dưới dạng bảng HTML có thể tìm kiếm, có thể lọc được ...
Clone Kho lưu trữ này (trong dòng lệnh) Git Clone [email protected]: Derekeder/CSV-to-html-Table.Git CD CSV-to-HTML-Table ..
Thêm tệp CSV của bạn vào dữ liệu/ thư mục ..
Trong chỉ mục.HTML đặt các tùy chọn của bạn trong CSVTOHTMLTABLE.chức năng init () ..