Python 子进程

子进程 subprocess 模块使你可以从 Python 程序启动新的应用程序。这是多么酷啊?

在 Python 中启动一个进程:

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

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

process.communicate() 调用读取进程的输入和输出。stdout 是进程输出。只有在发生错误时才会写入 stderr。如果你想等待程序完成,可以调用 Popen.wait()

subprocess.call()

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

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

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

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

保存进程输出(stdout)

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

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

用法示例:

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