我想用SVOX / pico2wave从Python代码编写一个wav文件。当我从终端执行此行时,文件写得很好:
/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."
我已经确认pico2wave位于/usr/bin
。
这是我的Python代码:
from subprocess import call
call('/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."')
...抛出此错误:
Traceback (most recent call last):
File "app/app.py", line 63, in <module>
call('/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."')
File "/usr/lib/python2.7/subprocess.py", line 168, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 390, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1024, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
答案 0 :(得分:2)
通常优选提供一系列参数,因为它允许 模块,以处理任何所需的转义和引用 参数(例如,允许文件名中的空格)。如果传递一个 string,要么shell必须为True(见下文),否则字符串必须为 简单地命名要执行的程序而不指定任何程序 参数。
所以你可以试试
call(['/usr/bin/pico2wave', '-w=/tmp/tmp_say.wav', '"Hello world."'])