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

命令使用cmd,但不是来自python代码,python,subprocess,avconv,Python,Subprocess,Avconv,我正在尝试使用avconv将test.mp4文件从python代码转换为test.wav。我可以使用cmd行将test.mp4转换为test.wmv,但当我从python运行相同的命令时,会出现以下错误: 第103行,在获取信息音频中 子流程调用(cmdline) FileNotFoundError:[WinError 2]系统找不到指定的文件 我在python文件中使用的代码是: cmdline=['avconv', “-我”, “test.mp4”, “-vn”, “-f”, “wav”,

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

第103行,在获取信息音频中 子流程调用(cmdline) FileNotFoundError:[WinError 2]系统找不到指定的文件

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

cmdline=['avconv', “-我”, “test.mp4”, “-vn”, “-f”, “wav”, 'test.wav']

子流程调用(cmdline)

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

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


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

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

import os

print(os.getcwd())
检查脚本在何处查找文件

如果那不是正确的位置,你可以使用

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

我猜它没有找到
avconv
可执行文件。我建议您在Python命令中使用
avconv
的完整绝对路径。您可以尝试的另一件事是使用shell,方法是将
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.mp4
test.wav
只是传递给
avconv
的字符串

我的猜测是,
avconv
不在Python运行命令的环境路径中
shell=True
可能会有所帮助