我有一个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!
答案 0 :(得分:1)
如果我正确理解了这个问题,那么您需要做的就是将要从ANOTHER_FILE
运行的内容包装到一个函数中,然后可以调用该函数。
因此,假设您有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