标签:stdout 外观 info 命令 返回值 系统 序列 通信 常用
当我们需要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。但是这两个命令过于简单,不能完成一些复杂的操作,如给运行的命令提供输入或者读取命令的输出,判断该命令的运行状态,管理多个命令的并行等等。这时subprocess中的Popen命令就能有效的完成我们需要的操作。
subprocess模块允许一个进程创建一个新的子进程,通过管道连接到子进程的stdin/stdout/stderr,获取子进程的返回值等操作。
这个模块只有一个类:Popen
创建Popen对象:
import subprocess obj = subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
参数的说明:
subprocess.PIPE
import subprocess a = subprocess.Popen(‘ipconfig‘, shell=True, stdout=subprocess.PIPE) print(str(a.stdout.read(), ‘gbk‘))
在创建Popen对象时,subprocess.PIPE可以初始化stdin, stdout或stderr参数。表示与子进程通信的标准流。这是因为subprocess创建了子进程,结果本在子进程中,if 想要执行结果转到主进程中,就得需要一个管道,即 : stdout=subprocess.PIPE。
subprocess.STDOUT
创建Popen对象时,用于初始化stderr参数,表示将错误通过标准输出流输出。
参考:http://www.cnblogs.com/yuanchenqi/articles/5732581.html
标签:stdout 外观 info 命令 返回值 系统 序列 通信 常用
原文地址:http://www.cnblogs.com/seaidler/p/7200967.html