Bash命令在Python中不起作用

2024-09-29 18:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从Python或Perl执行下一个bash命令:

googlesamples-assistant-pushtotalk --credentials /home/jsti/.config/google-oauthlib-tool/credentials.json
--device-model-id 'pbx-assista' --device-id 'pbx' -i /tmp/google_audio1314_in.wav -o /tmp/google_audio1314_out.wav -v

基本的想法是发送一个音频到Google助手,然后,它应该用另一个音频来回答我的音频。我应该收到一个音频文件作为回应谷歌助手,但我没有收到它。没有错误,但文件没有到达。在

如果我在终端中执行这个命令,它可以正常工作。在

有人知道这个命令发生了什么吗?在

代码如下:

^{pr2}$

Tags: 命令bashiddevicegoogle助手音频tmp
2条回答

这里使用的代码实际上并不等待子进程退出(也不考虑它是否成功,因此无法检测和报告错误)。在

更改:

subprocess.Popen(args)

…到。。。在

^{pr2}$

……或者。。。在

p = subprocess.Popen(args)
p.wait()

另外,您需要将'"pbx"'更改为'pbx';原始bash版本中的双引号是语法的,就像Python版本中的单引号一样,除了语法引号之外,您不需要文字引号。(Bash有选择地允许在不需要语法引号的情况下省略它们,以防止不必要的扩展,使语法上有意义的字符变为字面意义,或者类似的;对于Python,在定义字符串时,它们总是必需的)

去掉"pbx-assista""pbx"左右的双引号。在

args = [command, ' credentials', oauth_dir, ' device-model-id', 'pbx-assista', ' device-id', 'pbx', '-i', audio_in, '-o', audio_out, '-v']

相关问题 更多 >

    热门问题