执行python脚本没有输出

时间:2016-06-10 10:09:53

标签: python function flask subprocess popen

我写了一个脚本,当我在shell中运行它时,它打印值,输出正确(sudo python /home/pi/map/apps/assistant/IFTTT.py):

def GetCalenderMessages():
    print("test")
    CalenderMessage = bus_service.receive_queue_message('calendar',   peek_lock=True)
    if CalenderMessage != None:
        message = str(CalenderMessage.body)
        queuemessage = message.split('|')[1]
        print(queuemessage)

        sys.stdout.write(queuemessage)
        saytts(queuemessage)
        CalenderMessage.delete()

我有一个带On开关的接口,当我按下On这个脚本应该被执行,这是有效的,但我没有得到定义的打印输出我上面的脚本。

@app_bp.route("/on", methods=["POST"])
@opsoroapp.app_api
def on():
    print('test')
    cmd = "sudo python /home/pi/OnoSW/apps/assistant/IFTTT.py"
    p = subprocess.Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT)
    for line in iter(p.stdout.readline,''):
        print line

我尝试使用子进程执行不同的操作,例如subprocess.check_output等,但它不会返回打印值。

谢谢

1 个答案:

答案 0 :(得分:0)

1)只需导入脚本并调用Popen

,而不是使用管道和GetCalenderMessages

2)您是否希望将其打印到控制台或输出到webapp用户?

如果出现第二种情况:

在您的route函数中,您似乎没有return任何内容。记住flask路径是如何工作的,你返回的(成功时)会输出给用户(以网页的形式),因此你需要存储你的结果,然后将其作为字符串返回或者将其添加到HTML模板和render该模板。

See more

如果您希望将其打印到控制台,尝试1)可以解决您的问题