2012-04-01 53 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])