将python exec或eval输出捕获到变量

时间:2019-04-17 13:31:32

标签: python flask eval

我正在使用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?

0 个答案:

没有答案