命令使用cmd,但不是来自python代码
我正在尝试使用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命令使用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添加到系统变量中。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
可能会有所帮助