使用cmd的命令,但不是来自python代码

时间:2019-04-28 03:45:06

标签: python subprocess avconv

我正在尝试使用av​​conv将python代码中的test.mp4文件转换为test.wav。我可以使用cmd行将test.mp4转换为test.wmv,但是当我从python运行相同的命令时,出现以下错误:

第103行,在get_message_audio中     subprocess.call(cmdline) FileNotFoundError:[WinError 2]系统找不到指定的文件

我从python文件中使用的代码是:

cmdline = ['avconv',            '-一世',            'test.mp4',            '-vn',            '-F',            “ wav”,            'test.wav']

subprocess.call(cmdline)

但是当我从cmd运行相同的命令时,它将成功运行并保存test.wav文件。

cmd行= avconv -i test.mp4 -f wav test.wav

注意:我已经将avconv添加到系统变量中。 python文件和test.mp4在同一目录中。我也在同一目录中运行cmd。

2 个答案:

答案 0 :(得分:1)

我的猜测是它找不到avconv可执行文件。我建议您在Python命令中使用avconv的完整绝对路径。您还可以尝试使用外壳程序,方法是将shell=True添加到您的subprocess.call()调用中。

换句话说,执行此操作,看看是否有帮助:

cmdline = [r'\full\path\to\avconv', '-i', 'test.mp4', '-vn', '-f', 'wav', 'test.wav']
subprocess.call(cmdline, shell=True)

我不认为这是找不到的输入文件。似乎没有那么遥远。在subprocess.call(cmdline)失败时,test.mp4test.wav只是传递给avconv的字符串。

我的猜测是avconv不在Python运行命令的环境的PATH中。 shell=True可能会帮助您。

答案 1 :(得分:0)

文件的位置可能不是您当前的工作目录。添加

import os

print(os.getcwd())

要检查脚本在哪里查找文件。

如果位置不正确,可以使用

os.chdir(„your/file/directory“)