【问题标题】:How to run python function by clicking html button?如何通过单击html按钮运行python函数?
【发布时间】:2019-11-03 01:53:42
【问题描述】:

我正在尝试使此 Web 应用程序正常工作,但出现错误。这些是网络应用程序应该处理的步骤:

  1. 导入文件
  2. 运行python脚本
  3. 导出结果

当我独立运行 python 脚本(不干扰烧瓶)时,它工作正常(我使用 Jupyter 笔记本)另一方面,当我用烧瓶运行它时(从提示符)我得到一个错误:

File "app.py", line 88, in <module>
    for name, df in transformed_dict.items():
NameError: name 'transformed_dict' is not defined

知道如何使这个网络应用程序正常工作吗? 这是我第一次使用flask,如果有任何建议或指导,我将不胜感激。

python file & html file

from flask import Flask,render_template,request,send_file
from flask_sqlalchemy import SQLAlchemy
import os
import pandas as pd
from openpyxl import load_workbook
import sqlalchemy as db

def transform(df):
    # Some data processing here 
    return df

app=Flask(__name__)

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


@app.route('/upload',methods=['Get','POST'])
def upload():
    file=request.files['inputfile']

    xls=pd.ExcelFile(file)

    name_dict = {}

    snames = xls.sheet_names

    for sn in snames:
        name_dict[sn] = xls.parse(sn)

    for key, value in name_dict.items():
        transform(value)
    transformed_dict={}

    for key, value in name_dict.items():
        transformed_dict[key]=transform(value)

#### wirte to excel example:
writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
for name, df in transformed_dict.items():
    df.to_excel(writer, sheet_name=name)
writer.save()

if __name__=='__main__':
    app.run(port=5000)

【问题讨论】:

  • 你只需要缩进最后一个块,让它作为upload()的一部分运行
  • @Randy 谢谢你的回答。你能给我举个例子吗?我不确定我是否理解您的建议。

标签: python-3.x pandas flask flask-sqlalchemy


【解决方案1】:

你的块:

#### wirte to excel example:
writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
for name, df in transformed_dict.items():
    df.to_excel(writer, sheet_name=name)
writer.save()

应该是您的upload() 函数的一部分,因为这是您定义和填写transformed_dict 的地方。您只需要将那里的缩进与它上面的块相匹配。

出现当前错误是因为它试图在您启动脚本后立即运行该代码,而此时transformed_dict 不存在。

【讨论】:

  • 感谢您的帮助。我能够运行脚本而没有任何错误,但我不确定为什么单击“提交”按钮时没有任何反应。我在这里错过了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 2013-04-04
  • 2018-10-15
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多