我正在尝试将字符串文字传递给Popen命令,但它不起作用:
subprocess.Popen(['/usr/bin/festival', '-b', '(SayText "%s")']) % text
我的想法是,我想将文本传递给Popen命令,该命令调用程序节,它将读取输入文本。
是否可以在popen命令中传递字符串文字?我的猜测是,这不起作用,因为Popen命令在列表中。
答案 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])