【发布时间】:2020-06-18 01:49:39
【问题描述】:
你好,世界,
Python 和 FLASK 的新手,我想从 flask 上传、处理和下载一个 csv 文件。
以下代码为我提供了请求的输出,存储在“app.py”中:
from flask import Flask, make_response, request
import io
import csv
import pandas as pd
app = Flask(__name__)
@app.route('/')
def form():
return """
<html>
<body>
<h1>Data Processing</h1>
</br>
</br>
<p> Insert your CSV file and then download the Result
<form action="/transform" method="post" enctype="multipart/form-data">
<input type="file" name="data_file" class="btn btn-block"/>
</br>
</br>
<button type="submit" class="btn btn-primary btn-block btn-large">Pocess</button>
</form>
</body>
</html>
"""
@app.route('/transform', methods=["POST"])
def transform_view():
# Load DF
df = pd.read_csv(request.files.get('data_file'))
# Process
df['New'] = df['col1'].apply(lambda x: '{0:0>10}'.format(x))
# Send Response
resp = make_response(df.to_csv())
resp.headers["Content-Disposition"] = "attachment; filename= export.csv"
resp.headers["Content-Type"] = "text/csv"
return resp
if __name__ == "__main__":
app.run(debug=True)
问题 将我的文件拆分为 index.html 和 app.py 后,如何连接它们? 我试过 render_template 但没有成功
编辑
检查您的 cmets 后,以下是我所做的:
文件夹:
- 用户/pro/app.py
- 用户/pro/templates/index.html
- 用户/pro/templates/images/logo.jpg
- 用户/pro/templates/mycss.css
将之前的文件拆分成app.py和index.html
App.py 看起来像这样
from flask import Flask, make_response, request, render_template
import io
import csv
import pandas as pd
from datetime import datetime
app = Flask(__name__, template_folder='C:/Users/pro/templates')
@app.route('/')
def home():
return render_template('index.html')
@app.route('/transform', methods=["POST"])
def transform_view():
# Load DF
df = pd.read_csv(request.files.get('data_file'))
# Process
df['New'] = df['col1'].apply(lambda x: '{0:0>10}'.format(x))
# Send Response
resp = make_response(df.to_csv())
resp.headers["Content-Disposition"] = "attachment; filename= export.csv"
resp.headers["Content-Type"] = "text/csv"
return resp
if __name__ == "__main__":
app.run(debug=True)
Index.html 看起来像这样
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>ML API</title>
<link href="mycss.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="login"> <br/><br/><br/>
<center>
<img src= "images/logo.jpg" width="550" height="145"> <br/><br/>
<input type="file" class="btn btn-primary btn-block btn-large" name="myfile" required="required"/> <br/>
<button type="submit" class="btn btn-primary btn-block btn-large" >Process</button>
</center>
</div>
</body>
</html>
问题是现在没有进行任何处理。当我点击处理时,什么也没有发生。之前,我能够下载包含新列的 CSV 文件。此外,图像不显示。
感谢任何人的帮助
【问题讨论】: