system()返回错误代码32512-Python

system()返回错误代码32512-Python,python,subprocess,os.system,Python,Subprocess,Os.system,我在Python2.7中使用以下系统命令。我能够在terminal中成功执行相同的命令,但无法在python中运行它(获取返回代码=32512)。该命令基本上将mp3文件转换为wave文件以及立体声到单声道的转换。我能够在终端中成功运行相同的命令 下面是我正在尝试的命令: os.system("ffmpeg -i /Users/krish/audio.mp3 -acodec pcm_s16le -ar 16000 -ac 1 /Users/krish/converted_audio.wav")

我在Python2.7中使用以下系统命令。我能够在terminal中成功执行相同的命令,但无法在python中运行它(获取返回代码=32512)。该命令基本上将mp3文件转换为wave文件以及立体声到单声道的转换。我能够在终端中成功运行相同的命令

下面是我正在尝试的命令:

os.system("ffmpeg -i /Users/krish/audio.mp3 -acodec pcm_s16le -ar 16000 -ac 1 /Users/krish/converted_audio.wav")
我还尝试使用subprocess命令,但它给出了相同的32512返回代码


有谁能帮我解决一下这个问题吗?

您之所以会遇到这个错误,是因为您必须在
os.system()
中使用ffmpeg命令的完整路径


不要查看
os.system()
而是查看
subprocess.call()
。可能会有帮助。

对此有更具体的答案

而不是在python中使用这样的命令:

os.system("ffmpeg -i /Users/krish/audio.mp3 -acodec pcm_s16le -ar 16000 -ac 1 /Users/krish/converted_audio.wav")
首先,通过在终端中发出以下命令(适用于linux和mac),尝试找出ffmpeg的安装位置

哪个ffmpeg

在我的例子中,这是上述命令的输出:

/usr/local/bin/ffmpeg

现在,在python中修改
os.system
命令,如下所示:

os.system("/usr/local/bin/ffmpeg -i /Users/krish/audio.mp3 -acodec pcm_s16le -ar 16000 -ac 1 /Users/krish/converted_audio.wav")

这应该可以很好地工作,而不会抛出
32512
错误

我使用subprocess.call如下:subprocess.call('ffmpeg-I/Users/krish/audio.mp3-acodec pcm_s16le-ar 16000-ac 1/Users/krish/converted_audio.wav',shell=True)。现在我得到一个返回码1270,您需要阅读subprocess.call的文档。我提供的链接应该会有所帮助。您必须将命令和参数分开。谢谢。我也分别试过了。但是没有起作用。如果你能告诉我确切的用法,那就太好了!然而,当我在os.system()中使用ffmpeg的完整路径时,我能够使它工作。为了检索ffmpeg的完整路径,我在终端中使用了“which ffmpeg”。这是不正确的。
os.system
subprocess
都只使用命令名。绘图-您是对的。经过进一步研究,当给定命令中的字符太多时,32512显然是一个错误。2013年被列为(已关闭)错误,根据:但是其他研究表明,通常32512抛出512,这是一个“未找到命令”错误,这意味着在该实例中需要完整路径。否则,我认为你是对的。我不知道为什么,但python似乎无法在你的$PATH中找到
ffmpeg
。如果您在命令中使用ffmpeg可执行文件的完整路径,那么它应该可以工作。