我正在尝试使用avconv将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。
答案 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.mp4
和test.wav
只是传递给avconv
的字符串。
我的猜测是avconv
不在Python运行命令的环境的PATH中。 shell=True
可能会帮助您。
答案 1 :(得分:0)
文件的位置可能不是您当前的工作目录。添加
import os
print(os.getcwd())
要检查脚本在哪里查找文件。
如果位置不正确,可以使用
os.chdir(„your/file/directory“)