【问题标题】:command working with cmd but not from python code命令使用 cmd 但不是来自 python 代码
【发布时间】:2019-04-28 03:45:06
【问题描述】:

我正在尝试使用 avconv 将 test.mp4 文件从 python 代码转换为 test.wav。我可以使用 cmd 行将 test.mp4 转换为 test.wmv,但是当我从 python 运行相同的命令时,它给了我以下错误:

第 103 行,在 get_message_audio 中 subprocess.call(命令行) FileNotFoundError: [WinError 2] 系统找不到指定的文件

我在 python 文件中使用的代码是:

cmdline = ['avconv', '-一世', 'test.mp4', '-vn', '-F', '哇', '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


    【解决方案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 可能会有所帮助。

    【讨论】:

      【解决方案2】:

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

      import os
      
      print(os.getcwd())
      

      检查脚本在哪里查找文件。

      如果位置不对,可以使用

      os.chdir(„your/file/directory“)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        • 1970-01-01
        • 2012-11-11
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多