2012-04-01 4 views
1

내가는 popen 명령에 리터럴 문자열을 전달하려고하지만 작동하지 않습니다되어파이썬 문자열 리터럴 내부는 popen 명령

subprocess.Popen(['/usr/bin/festival', '-b', '(SayText "%s")']) % text 

아이디어는 내가는 popen 명령에 텍스트를 전달하려는 것입니다 이 프로그램 축제는 입력 텍스트를 읽을 것입니다.

popen 명령 내에 문자열 리터럴을 전달할 수 있습니까? Popen 명령이 목록에 있기 때문에 이것이 작동하지 않는다고 생각합니다.

festivalCmd = '(SayText "%s")' % text.replace('"', '') 
subprocess.Popen(['/usr/bin/festival', '-b', festivalCmd]) 

replace에 대한 호출이 제대로 실패없이 foo"bar처럼 입력을 전달하고 보장 : 당신이 올바른지

답변

1

는 목록 요소 및 Popen 아닌 결과 또는 인수 목록을 포맷합니다.

0

구문이 잘못되었습니다. 나는 축제 스피치 신디 시스템에 대해 많이 알지 못한다. 그러나 만약 당신이 그것을 이렇게 썼다면, 그것은 일할 것이다 :

subprocess.Popen(['/usr/bin/festival', '-b', '(SayText "%s")' % text])