파이썬 및 서브 프로세스 모듈을 통해 제어하려고하는 응용 프로그램이 있습니다. 기본적으로 Popen (프로그램이 실행되는 명령 프롬프트를 여는)을 사용하여 응용 프로그램을 시작한 다음 나중에 실행중인 시점에서 해당 프로그램의 STDIN에 문자열 (명령)을 전송해야합니다 . 파이썬이 시작한 응용 프로그램의 명령 창에 단추를 수동으로 입력 할 때까지 명령이 처리되지 않는다는 점만 제외하면 잘 작동합니다. 여기 내 코드의 일부입니다 :문제 Windows에서 Python의 subprocess.communicate() 사용
cmd = 'quit\n'
app.communicate(cmd.encode('utf-8'))
어떤 아이디어?
편집 # 1
예는 버튼을 입력하는 것은 혼란을 드려 죄송 키보드의 키를 누르 의미한다. 내가
아래 내 코드의 자세한 내용을 첨부했습니다app = Popen(['runProg.exe', '-m', '20'], stdin=PIPE, universal_newlines=True)
while not os.path.exists('C:/temp/quit-app.tmp'): time.sleep(1)
app.communicate('quit')
os.remove('C:/temp/quit-app.tmp')
그래서 어떻게해야 무엇을 종료-app.tmp 파일이 생성 될 때까지 실행해야하는 프로그램입니다; 일단 만들어지면 "quit"이 응용 프로그램에 보내 져야합니다. 응용 프로그램은 깨끗하게 종료되는 명령입니다. 인간이이 프로그램을 실행했다면 명령 창에 "quit"을 입력하면됩니다. 감사!
"버튼 입력"은 키 (키보드)를 누르는 것이 아니라는 것을 확인할 수 있습니까? 그렇지만 혼란을 피하기 위해서입니다. 그것은 정상적인 콘솔 응용 프로그램입니까? Popen 전화는 어떻습니까? 어쩌면 코드를 더 붙여 넣을 수도 있습니다. – RedGlyph