나는 스크립트를 작성하지 않고 내가 쉘에서 실행할 때,이 값을 인쇄, 출력 올바른 (sudo는 파이썬 /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'을 실행하기위한 패스워드를 제공해야합니까? 왜 여기서'sudo'가 필요한가요? – jfs