schrieb ich ein Drehbuch und wenn ich es in der Shell ausgeführt, druckt er die Werte, Ausgabe korrekt (sudo python /home/pi/map/apps/assistant/IFTTT.py):Ausführung Python-Skript keine Ausgabe
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()
Ich habe eine Schnittstelle mit einem On-Schalter und wenn ich auf On drücken, sollte dieses Skript ausgeführt werden, was funktioniert, aber ich bekomme nicht die Druckausgabe definiert ich das Skript oben.
@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
Ich habe versucht, verschiedene Dinge mit subprocess, wie subprocess.check_output usw., aber es die gedruckten Werte nicht zurück geben.
Danke
Warum Sie dies über Popen tun? Warum kann man nicht einfach das Skript importieren und die Funktion aufrufen? –
Ihre Funktion sollte stattdessen einen Wert zurückgeben mit 'print()', 'sys.stdout.write()', etc und wie @DanielRoseman sagte: Importieren Sie das Modul und rufen Sie die Funktion, anstatt es als separaten Prozess. 1- siehst du das Ergebnis von 'print ('test')'? 2- Sehen Sie das Ergebnis von 'print >> sys.stderr," stderr "'? 3- Müssen Sie ein Passwort angeben, um 'sudo python' auszuführen? Warum brauchst du 'sudo' hier? – jfs