#!/usr/bin/python # -*- coding: utf-8 -*- import sys import subprocess as sp def main(): cmd = ‘systeminfo‘ p = sp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.PIPE) (o, e) = p.communicate()
print o if __name__ == ‘__main__‘: main() myprint(‘done’)
在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数。表示与子进程通信的标准流。
Popen的方法:
用于检查子进程是否已经结束。设置并返回returncode属性。
等待子进程结束。设置并返回returncode属性。
与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。Communicate()返回一个元组:(stdoutdata, stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。
向子进程发送信号。
停止(stop)子进程。在windows平台下,该方法将调用Windows API TerminateProcess()来结束子进程。
杀死子进程。
如果在创建Popen对象是,参数stdin被设置为PIPE,Popen.stdin将返回一个文件对象用于策子进程发送指令。否则返回None。
如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回None。
如果在创建Popen对象是,参数stdout被设置为PIPE,Popen.stdout将返回一个文件对象用于策子进程发送指令。否则返回None。
获取子进程的进程ID。
获取进程的返回值。如果进程还没有结束,返回None。
下面是一个非常简单的例子,来演示supprocess模块如何与一个控件台应用程序进行交互。
原文:http://www.cnblogs.com/hwlcathy/p/4368291.html