Python字符串文字内部Popen命令

时间:2012-04-01 15:53:27

标签: python string popen literals

我正在尝试将字符串文字传递给Popen命令,但它不起作用:

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

我的想法是,我想将文本传递给Popen命令,该命令调用程序节,它将读取输入文本。

是否可以在popen命令中传递字符串文字?我的猜测是,这不起作用,因为Popen命令在列表中。

2 个答案:

答案 0 :(得分:1)

你是对的,格式化列表元素,而不是Popen或参数列表的结果:

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

replace的调用可确保您正确处理foo"bar之类的输入而不会失败。

答案 1 :(得分:0)

你的语法错了。我对节日语音合成系统知之甚少,但如果你这样写,那就行了:

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