다른 파이썬 파일을 받아 들일 수 있고 하위 프로세스로 실행할 수있는 기본 파이썬 프로젝트가 있습니다. 기본 프로젝트는 사용자 입력을 받아들이고 하위 프로세스로 전달한 다음 코드를 실행하고 stdout을 통해 값을 반환합니다.이 값은 사용자에게 다시 입력됩니다. 나는 비슷한 일을하고있어 기본 프로그램에서 파이썬 하위 프로세스 제어 출력
: 서브 프로세스의 다음dataReturnValue = subprocess.check_output(['python', pythonScriptPath, json.dumps(inputParams)])
나는 이런 일이 : 데이터가 올바르게 반환됩니다
inputParams = sys.argv[1]
...
...
sys.stdout.write(returnValue)
을하지만, 내가 뭘 ' d는 반환 된 데이터를 returnValue로 제한해야합니다. 지금은 서브 프로세스와 리턴 값을 포함한 모든 print 서술문을 반환합니다. 이것은 출력 형식이고 인쇄물은 stdout 래퍼와 비슷하기 때문에 나에게 의미가있다. 그러나 나는 이것을 더 잘 제어하고 싶다.
하위 출력에서 반환 된 값에 포함 된 출력 또는 출력이 없도록 최종 출력 명령문 바로 전에 stdout 버퍼를 지우는 방법이 있습니까?
편집 : 마지막 호출 직전에 sys.stdout.buffer.flush(), sys.stdout.flush()를 시도해 보았습니다 최종 반환 값과 함께 전송 된 것처럼 보입니다.
파이썬 스크립트라면'subprocess'를 사용하는 것이 가장 좋은 방법은 아닙니다. 이 접근법에 전념한다면 분리 기호 인 센티널 값을 인쇄하는 것이 좋습니다.'print'('SENTINEL', end = '')'그리고 나서'value = dataReturnValue.split ('SENTINEL') [- 1]'을 실행하십시오. -하지만 실제로 스크립트를 가져 와서 함수를 호출하는 것이 이상적입니다. . – sytech