2012-04-01 51 views
1

我試圖傳遞一個字符串到POPEN命令,但它不工作:Python字符串字面內部POPEN命令

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

的想法是,我想文本傳遞到POPEN命令,它將調用節目節,它將讀取輸入文本。

是否可以在popen命令中傳遞字符串字面值?我的猜測是,這不起作用,因爲Popen命令在列表中。

回答

1

你是正確的,格式化列表元素,以及Popen沒有結果或參數列表:

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

replace的調用確保你正確地交給像foo"bar投入不會失敗。

0

您的語法錯誤。我不太瞭解節日演講合成器系統,但如果你這樣寫的話,這將是工作:

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