python subprocess呼叫在编写文件时会引发错误



我想使用svox/pico2wave来编写python代码的wav-file。当我从终端执行此行时,文件写得很好:

/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

来自文档

通常优选提供一系列参数,因为它允许 照顾任何必需的逃脱和报价的模块 参数(例如,允许文件名中的空间(。如果通过一个 字符串,要么壳必须为true(见下文(,否则字符串必须 只需命名要执行的程序而不指定任何 参数。

所以您可以尝试

call(['/usr/bin/pico2wave', '-w=/tmp/tmp_say.wav', '"Hello world."'])

相关内容

  • 没有找到相关文章

最新更新