每次迭代无法多次打开带有烧瓶的html文件

时间:2015-08-05 22:03:45

标签: python flask webserver

我有一个烧瓶应用程序,它提供了一个网页,允许用户通过点击按钮来运行功能:

from flask import Flask, render_template, redirect, request, url_for
from xml_identifiersearch import searchXML, printHTML

app = Flask(__name__)

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

@app.route('/', methods=['POST'])
def gateway():
    if request.form['submit'] == 'Identifier Search':
            return redirect(url_for('identifier_home'))

@app.route('/id/')
def identifier_home():
    return render_template('id_home.html')

@app.route('/id/', methods=['POST'])
def identifier_search():
    printHTML(request.form['input'])
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000,debug=True)

但是,正在运行的名为“printHTML”的函数涉及打开一个文件,然后将html代码写入其中。

从烧瓶代码中可以看出,在运行该函数后,应用程序将返回索引页面。但是,由于某种原因,在重定向回索引页面后,该功能将停止正常工作。

它仍将打开正在写入另一个选项卡的文件的副本,但它实际上不会打开该文件并再次写入该文件。以下是该函数代码的片段:

def printHTML(search):    
    f = open("output.html", "w")           #output to a single html file

    print >>f, '<html><head><link rel="stylesheet" type="text/css" href="my_style.css"></head><body><table border="1">'


    print >>f, "<tr>"                     #print the table headers
    print >>f, "<th>File Name</th>"
    print >>f, "<th>Creation Time</th>"
    print >>f, "<th>Correlation ID</th>"
    print >>f, "<th>Reporter Location</th>"
    print >>f, "<th>Event Name</th>"
    print >>f, "<th colspan='100'>Description </th>"
    print >>f, "</tr>"

    f.close()

    new=2
    url="file:///Users/dinakarguthy/Documents/main2/output.html"
    webbrowser.open(url,new=new)

所以我的问题是:

f = open(...)和f.close()内函数的所有部分都不会多次运行。他们只在第一次工作,之后他们根本不工作,除非我重新启动我的烧瓶服务器。 output.html文件也没有被截断,这应该在

时发生
f = open("output.html", "w")

直线运行。这意味着由于某种原因线路根本没有运行。但是,该函数的其余部分,即使用output.html文件打开一个新选项卡的部分仍为STILL FUNCTIONS。

这意味着我的烧瓶应用程序正在调用该函数,但由于某种原因,在网络服务器启动后第一次这样做时,它无法打开文件。

概要

我有一个运行python函数的烧瓶应用程序。烧瓶应用程序似乎运行正常,它正确调用该功能。但是,在第一次之后,函数的open()行似乎没有正确执行。功能中的其他所有功能都有效。唯一的解决方案是重新启动烧瓶应用程序的实例并重新启动Web服务器。

声明: 这是我第一次询问有关堆栈交换的问题。如果我的格式或礼仪或提供的信息不充分或不合适,请告诉我,我会尽力解决。

0 个答案:

没有答案