我写了一个脚本,当我在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等,但它不会返回打印值。
谢谢
答案 0 :(得分:0)
1)只需导入脚本并调用Popen
GetCalenderMessages
。
2)您是否希望将其打印到控制台或输出到webapp用户?
如果出现第二种情况:
在您的route
函数中,您似乎没有return
任何内容。记住flask路径是如何工作的,你返回的(成功时)会输出给用户(以网页的形式),因此你需要存储你的结果,然后将其作为字符串返回或者将其添加到HTML模板和render
该模板。
如果您希望将其打印到控制台,尝试1)可以解决您的问题