2013-10-03 1 views
0

를 사용하여 처리합니다. 그렇다면이 파이썬 코드를 사용하여 호출을 자동화하는 방법 :입력 내가 보통과 같이 터미널에서 실행 명령 (푼다)가 파이썬

from subprocess import call 
    call(['foo']) 

foo 로의 입력을 자동화하는 방법은 무엇입니까?

+0

'호출 ([ '문자열을 입력'(입력)]) '파이썬 2.x에서는'call ([raw_input()])'이된다. – karthikr

+0

이것은 foo에 대한 참조가 없다. 어떻게 부르죠? – tdk

+0

@ user1928721 위의 주석에서이 방법을 사용하지 마십시오. 당신이 원하는 것이 아닙니다. – SethMMorton

답변

0

사용 Popencommunicate :

from subprocess import Popen, PIPE 

process = Popen('foo', stdout=PIPE, stderr=PIPE) 

(stdout, stderr) = process.communicate("YOUR INPUT HERE") 

print stdout 
+0

이것은 작동하지 않습니다. 나는 여전히 프롬프트를 얻었고 나머지 코드는 작동하지 않는 것 같습니다. – tdk

+0

@ user1928721 "작동하지 않는 것 같습니다."* 더 자세하게 말하십시오. 그것은 의사에게 가서 "상처를 입히고"그들이 당신을 진단 할 것을 기대하는 것과 같습니다. 정확하게 작동하지 않는 것을 진술하십시오. 당신은 어떤 결과물을 보았습니까? 어떤 행동을합니까? 너는 무엇을 기대 하느냐? – SethMMorton

+0

진심으로 사과드립니다. 나는 파이썬과 리눅스 프로그래밍의 새로운 세계에 새로운 사람이다. 1 분 이상 동안 입력하라는 즉석 프롬프트가 표시됩니다 (예 : '문자열 입력 :'). 자동 입력이 수행되지 않고 입력을 수동으로 입력한다고 가정합니다. 나머지 코드는 전혀 실행되지 않는 것처럼 보입니다. 즉, 커서가 10 분 동안 표시되고 커서가 몇 초 안에 결과를 제공하기 때문에 프로세스가 종료됩니다 ('입력 된 명령의 결과'). – tdk

1

당신은 타사 pexpect 모듈 (Here is the API)에서 확인할 수 있습니다 :

import pexpect 
child = pexpect.spawn('foo') 
child.expect('enter the string:') 
child.sendline('STRING YOU KNOW TO ENTER') 
child.close() # End Communication 
관련 문제