2012-06-18 3 views
0

문자열/데이터를 파이썬에서 실행중인 프로세스의 STDIN으로 보내는 방법은 무엇입니까?파이썬으로 CLI 프런트 엔드 : 실행중인 프로세스에 문자열을 전달하는 방법은 무엇입니까?

저는 CLI 프로그램을위한 프론트 엔드를 만들고 싶습니다. 예. 나는이 파스칼 응용 프로그램에 여러 개의 문자열을 전달하려는 : 난을 어떻게

program spam; 
var a,b,c:string; 
begin 
while e <> "no" do 
begin 
    writeln('what is your name?'); 
    readln(a); 
    writeln('what is your quest?'); 
    readln(b); 
    writeln('what is your favorite color?'); 
    readln(c); 
    print(a,b,c); 
end; 
end. 

은 (파이썬에서 서브 프로세스 모듈을 사용하여) 파이썬에서이 프로그램에 문자열을 전달합니다. 고맙습니다. 내 영어로 미안해.

+1

다른 대화식 프로그램을 제어하려면 [Pexpect module'']을 시도해 볼 가치가 있습니다 ((테스트되지 않은) 코드는 다음과 같이 테스트 할 수 있습니다. http://www.noah.org/python/pexpect/). – Blair

+0

고마워 블레어! 나는 수년간이 해결책을 찾고 있었다! :) – coffeeground

+0

@gnibbler - 지금 완료했습니다. 그런데 – Blair

답변

2

다른 대화 형 프로그램을 제어하려는 경우 Pexpect module을 사용해 볼 가치가 있습니다. 즉각적인 메시지 등을 찾고 프로그램과 상호 작용하도록 설계되었습니다. 현재 Windows에서 직접 작동하지 않습니다. Cygwin에서 작동합니다.

가능하지 않은 Cygwin Windows 변형은 WinPexpect이며 this question을 통해 발견되었습니다. 그 질문에 대한 대답 중 하나는 WinPexpect의 최신 버전이 http://sage.math.washington.edu/home/goreckc/sage/wexpect/에 있음을 나타내지 만, BitBucket (첫 번째 링크)이 실제로 최신이라고 생각하는 수정 날짜를 살펴 봅니다.

Windows 터미널은 유닉스 터미널과 약간 다르므로 직접 크로스 플랫폼 솔루션이 있다고 생각하지 않습니다. 그러나 WinPexpect 문서에서는 API와 pexpect 간의 유일한 차이점은 스폰 함수의 이름입니다.

관련 문제