使用 cmd 但不是来自 python 代码的命令
command working with cmd but not from python code
我正在尝试使用 avconv 将 test.mp4 文件从 python 代码转换为 test.wav。我可以使用 cmd 行将 test.mp4 转换为 test.wmv,但是当我 运行 来自 python 的相同命令时,它给我以下错误:
第 103 行,在 get_message_audio
subprocess.call(命令行)
FileNotFoundError: [WinError 2] 系统找不到指定的文件
我在 python 文件中使用的代码是:
命令行=['avconv',
'-一世',
'test.mp4',
'-vn',
'-F',
'wav',
'test.wav']
subprocess.call(命令行)
但是当我 运行 来自 cmd 的相同命令时它成功 运行s 并保存 test.wav 文件。
cmd line = avconv -i test.mp4 -f wav test.wav
注意:我已将 avconv 添加到系统变量。 python 文件和 test.mp4 在同一个目录下。我也在同一目录中 运行ning 命令。
文件的位置可能不是您当前的工作目录。添加
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 是 运行 命令的环境的 PATH 中。 shell=True
可能会有所帮助。
我正在尝试使用 avconv 将 test.mp4 文件从 python 代码转换为 test.wav。我可以使用 cmd 行将 test.mp4 转换为 test.wmv,但是当我 运行 来自 python 的相同命令时,它给我以下错误:
第 103 行,在 get_message_audio subprocess.call(命令行) FileNotFoundError: [WinError 2] 系统找不到指定的文件
我在 python 文件中使用的代码是:
命令行=['avconv', '-一世', 'test.mp4', '-vn', '-F', 'wav', 'test.wav']
subprocess.call(命令行)
但是当我 运行 来自 cmd 的相同命令时它成功 运行s 并保存 test.wav 文件。
cmd line = avconv -i test.mp4 -f wav test.wav
注意:我已将 avconv 添加到系统变量。 python 文件和 test.mp4 在同一个目录下。我也在同一目录中 运行ning 命令。
文件的位置可能不是您当前的工作目录。添加
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 是 运行 命令的环境的 PATH 中。 shell=True
可能会有所帮助。