我正在使用Python3.6和Flask从浏览器窗口(HTML表单)执行python代码。我似乎没有得到预期的结果。有没有办法从eval或exec函数捕获输出?以下是我在烧瓶中所做的事情。
来自html表单的代码
def abc():
return 'hello'
@app.route('/pyres',methods = ['POST', 'GET'])
def pyres():
if request.method == 'POST':
pycode = request.form['pycode']
globals = {}
locals = {}
code = compile(pycode, 'foo.py', 'exec')
a=eval(code, globals, locals)
#exec(pycode, globals, locals)
#a = locals['z']
pyres = {'status':locals['abc'], 'globals':globals}
return render_template("pyres.html", pyres=pyres)
我正在为本地人看,使用键“ abc”。我尝试将'hello'分配给变量,但输出相同。
<function abc at 0x7f1c31be0840>
我正在尝试不使用ast的方法,但是如果这是解决此问题的唯一方法,我可以坚持使用ast解决方案。 How to get results out of a Python exec()/eval() call?