2012-03-04 3 views
3

사용자에게 너무 많은 질문을하는 쉘 스크립트가 있습니다.파이썬 하위 프로세스 : 쉘 스크립트와 상호 작용

나는 를 입력 로모그래퍼 :로 끝나는 모든 질문에 대답 할, 그리고 ?y와로 끝나는 모든 질문은를 입력합니다. 예를 들어,

,

 
Enter your name: 
enter 

Enter your email: 
enter 

... 

Are you sure these details are correct? 
yenter 

내가 가진 하위 프로세스 시작 : 문제가 나타날 때까지 기다리고,

subprocess.Popen(shell=True, stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE) 

은 어떻게 스크립트의 출력을 통해 폴링 않습니다를? 이 같은

답변

4

시도 뭔가 (내가 그것을 테스트하지 않았습니다) : 나는 몰랐다 pexpect에 대한

import pexpect 

child = pexpect.spawn('yourprogram') 
while True: 
    found = child.expect ([r':$', r'\?$', pexpect.EOF]) 
    if found == 0: 
    child.send('\n') 
    elif found == 1: 
    child.send('y\n') 
    else: # EOF 
    return 
+0

+1. 그것은 매우 유용한 접근법처럼 보입니다 - 나는 그것을 효과있게하려고 노력할 것입니다. –

+2

'pexpect.run ('yourprogram', events = {r ': $': '\ n', r '\? $': 'y \ n'})' – jfs

+0

이것은 매우 기쁜 소식입니다! –