1

我想做的是在浏览器尝试访问我的 Raspberry Pi URL ( http://192.168.10.191:5000/console ) 时,LED 将打开,无需在前端键入任何 python,但是在此刻,我仍然需要在 Web 控制台上键入 python 才能按预期运行。

代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/user')
def here():
    return '<h1>user here</h>'

@app.route('/console')
def console():
    import pexpect
    child = pexpect.spawn('python')
    child.expect('\n>>>')
    child.sendline('import os')
    child.sendline('os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")')
    child.expect('\n>>>')

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

1 回答 1

1

您是否有理由要使用该/consoleURL?如果你使用不同的,你不会有这个问题。

Werkzeug 默认使用它进行调试。

您需要通过设置将其关闭use_evalex=False。有关更多详细信息,请参阅此问题

你也不需要使用pexpect. 直接拨打电话os.system

@app.route('/console')
def console():
    import os
    os.system("cd /sys/class/leds/led0 && sudo sh -c \'echo 1 > brightness\' ")

    return '<h1>changed brightness</h>'

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True, use_evalex=False)
于 2015-04-09T10:09:39.803 回答