我有一个Flask应用程序,它需要另一个Python文件中的数据(每次我访问/ result-var时-我希望执行[[ANOTHER_FILE,以将更新的variable_with_data返回给模板。如果我正在使用subprocess.call-我无权访问外部变量。如果我使用import-ANOTHER_FILE仅运行一次(要再次运行,我必须重新启动Flask应用程序)。但是每次从浏览器访问/ result-var时,我都需要这个variable_with_data。
@application.route('/result-var')
def result_var():
# subprocess.call("ANOTHER_FILE.py", shell = True)
from ANOTHER_FILE import output_in_var
variable_with_data = output_in_var
return render_template('result.html', variable_with_data=variable_with_data)
请提供一个想法,我有什么选择。 TIA!
ANOTHER_FILE
,其中包含类似以下内容:data = read_data()
result = process_data(data)
output_in_var = prepare_output(result)
然后您可以将所有内容包装到一个函数中,
def produces_output_in_var():
data = read_data()
result = process_data(data)
output_in_var = prepare_output(result)
然后调用该函数以显式运行代码(而不是在导入时隐式运行代码:]
from ANOTHER_FILE import produces_output_in_var
@application.route('/result-var')
def result_var():
variable_with_data = produces_output_in_var()
return render_template('result.html', variable_with_data=variable_with_data)
另请参见:Why is Python running my module when I import it, and how do I stop it?和关于此的python文档可能会有所帮助,但是它们有点技术性:https://docs.python.org/3/reference/import.html