Как запустить функцию Python, нажав кнопку HTML? - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь заставить это веб-приложение работать, но получаю ошибку. Вот шаги, которые веб-приложение должно обрабатывать:

  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

Есть идеи, как заставить это веб-приложение работать? Я впервые использую колбу, и я буду признателен за любые предложения или рекомендации.

Python-файл и HTML-файл

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)

1 Ответ

0 голосов
/ 04 ноября 2019

Ваш блок:

#### 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 не существует вэтот момент.

...