【问题标题】:How to run a program in command line from python [duplicate]如何从python在命令行中运行程序[重复]
【发布时间】:2012-11-10 05:48:45
【问题描述】:

可能重复:
How do I execute a program from python? os.system fails due to spaces in path

我正在尝试从 python 的命令行中调用程序 (MP3gain.exe)。我的问题是python在我发送到命令行的命令周围放置了一个[''],而dos似乎无法用它来解释命令。这是我的代码。

import os
import subprocess
import Editor

class normalize():
    def __init__(self, file):
        self.FileName = file

    def work(self):
        command = [ 'mp3gain /r /c' + self.FileName]
        subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)


if __name__ == "__main__":
    test = normalize("filename.mp3")
    test.work()

如果这有帮助,如果我有打印出退出代码,它是-2。感谢您的帮助。

【问题讨论】:

  • python puts a [' '] around the command 是什么意思?您不应该让真正的蛇为您输入代码,它只是语言名称。
  • 如果你的命令行应该是mp3gain /r /c filename.mp3 - 你试过command = ['mp3gain', '/r', '/c', self.FileName] 吗? (mp3gain 也必须可以从解释器的工作目录中调用 - 否则,您可能需要调用完整可执行文件的路径)

标签: python


【解决方案1】:

command应该是一个字符串列表,第一个是mp3gain,即:

command = ['mp3gain', '/r', '/c', self.FileName]

【讨论】:

    【解决方案2】:

    您可以使用os.system 调用程序。 例如,在您的程序中,您可以使用:

    os.system("mp3gain /r /c " + self.FileName)
    

    【讨论】:

    • os.system 是旧的。建议使用 subprocess 代替所有运行进程的旧方法。
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2020-04-26
    • 2020-05-09
    相关资源
    最近更新 更多