2015-02-03 6 views
2

파이썬을 통해이 생성기를 호출해야합니다. 원래 나는 발전기에 예를 연결하여이 작업을 수행했지만 첫 번째 옵션에는 아니오라고 대답해야합니다.파이썬에서 yeoman generator를 호출 하시겠습니까?

yes | yo angular --no-insight 

지금은 발전기에 파일의 출력을 보낸다 것은이 잘 작동

cat input.txt | yo angular --no-insight 

n 
y 
y 

input.txt을 입력하도록 지시하지만, 나는 또한 필요합니다 로그를 저장하여 출력을 out.txt로 리디렉션합니다.

cat input.txt | yo angular --no-insight > out.txt 

이것은 일이 잘못되는 곳입니다. 첫 번째 프롬프트는 예상대로 아니오로 응답하고, 모든 것이 멈 춥니 다.

프로그래밍 방식으로 생성기를 실행하는 방법이 필요합니다. 어댑터를 사용하는 것이 해결책 일 것이라고 생각했지만 작성하는 데는 문서가 전혀없는 것 같습니다.

유스 케이스에 어떻게 맞추어야합니까?

편집 : 여기 내는 popen은 이미 명령

 Popen("cat input.txt | yo angular --no-insight", shell=True).wait() 

몇 분 동안 대기에 문제가되지 않도록 명령이 자신의 스레드에 실행되는 클래스를 실행하는 데 사용하는 전화입니다. 그러나 나는 아마 미래의 업데이 트에서 발전기의 타임 아웃을 처리하기 위해 그것을 제거하는 것이 잘못 될 것입니다.

with open('out.txt', 'w') as file_output: 
    file_output.write(subprocess.check_output('cat input.txt | yo angular --no-insight', shell=True)) 

또한 단지 '요 각도 --no-통찰력'에 Popen 개체를 만들고 표준 입력으로 작성하고 표준 출력에서 ​​읽을 수 있습니다

+0

명령 줄에서' out.txt'를 실행하면 어떻게됩니까? (작동합니까?) Python에서 명령을 어떻게 실행합니까? (코드 표시) – jfs

+0

같은 일이 발생하면 첫 번째 프롬프트에 no로 응답 한 다음 다른 입력이 전달되지 않습니다. 소식이 내 popen 통화를 포함하도록 업데이트되었습니다. –

+0

stderr도 리디렉션하려고 했습니까? bash :'&> out.txt' – jfs

답변

0

당신은 파이썬의 subprocess module가 사용할 수 있습니다.

+0

에서 서브 프로세스의 출력을 파일로 재 지정하려면 대신'check_call (cmd, stdout = file_output)'을 사용하십시오. – jfs

+0

코멘트 주셔서 감사합니다. file_output.write() 솔루션을 사용하여 동일한 결과를 얻었습니다. 입력 한 첫 번째 행이 전달 된 다음 더 이상 입력이 이루어지지 않습니다. 나는 이미 서브 프로세스를 사용하고 있다고 언급하지 않았다. Popens stdin과 stdout 리디렉션을 사용하여 더 많은 작업을 해보겠습니다. –