原文: https://pythonspot.com/python-subprocess/

subprocess模块使您可以从 Python 程序启动新应用程序。 多么酷啊?

在 Python 中启动一个进程:

您可以使用Popen函数调用在 Python 中启动进程。 下面的程序启动 Unix 程序cat,第二个参数是参数。 这相当于cat test.py。您可以使用任何参数启动任何程序。

  1. #!/usr/bin/env python
  2. from subprocess import Popen, PIPE
  3. process = Popen(['cat', 'test.py'], stdout=PIPE, stderr=PIPE)
  4. stdout, stderr = process.communicate()
  5. print stdout

process.communicate()调用从进程中读取输入和输出。stdout是进程输出。仅当发生错误时,stderr才会被写入。 如果要等待程序完成,可以调用Popen.wait()

subprocess.call()

subprocess具有方法call(),可用于启动程序。该参数是一个列表,其第一个参数必须是程序名称。完整的定义是:

  1. subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
  2. # Run the command described by args.
  3. # Wait for command to complete, then return the returncode attribute.

在下面的示例中,完整的命令将为ls -l

  1. #!/usr/bin/env python
  2. import subprocess
  3. subprocess.call(["ls", "-l"])

保存进程输出(标准输出)

我们可以获取程序的输出,并使用check_output直接将其存储在字符串中。该方法定义为:

  1. subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)
  2. # Run command with arguments and return its output as a byte string.

用法示例:

  1. #!/usr/bin/env python
  2. import subprocess
  3. s = subprocess.check_output(["echo", "Hello World!"])
  4. print("s = " + s)