Я написал сценарий, и когда я запускаю его в раковине, он печатает значения, выход правильно (Судо питон /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 и т.д., но это не дает распечатанные значения обратно.
Спасибо
Почему вы делаете это через Popen? Почему вы не можете просто импортировать скрипт и вызвать функцию? –
ваша функция должна возвращать значение вместо этого с помощью 'print()', 'sys.stdout.write()' и т. Д., И, как @DanielRoseman сказал: импортируйте модуль и вызовите функцию вместо запуска в качестве отдельного процесса. 1- Вы видите результат 'print ('test')'? 2- Вы видите результат 'print >> sys.stderr," stderr "'? 3- Вам нужно указать пароль для запуска 'sudo python'? Зачем вам «судо» здесь? – jfs