命令使用cmd但不是python代码

问题描述 投票:2回答:2

我试图使用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',' - i','test.mp4',' - vn',' - f','wav','test.wav']

subprocess.call(CMDLINE)

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

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

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

python subprocess avconv
2个回答
1
投票

我的猜测是它找不到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.mp4test.wav只是被传递给avconv的字符串。

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


0
投票

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

import os

print(os.getcwd())

检查脚本查找文件的位置。

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

os.chdir(„your/file/directory“)
© www.soinside.com 2019 - 2024. All rights reserved.