subprocess是Python与系统交互的一个库,该模块允许生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回代码。

该模块旨在替换几个较旧的模块和功能:

os.system

os.spawn

os.popen

popen2

commands

相关函数

subprocess.call(args,*,stdin = None,stdout = None,stderr = None,shell = False )

运行args描述的命令。等待命令完成,然后返回returncode属性
subprocess.check_call(args,*,stdin = None,stdout = None,stderr = None,shell = False )

使用参数运行命令并将其输出作为字节字符串返回。如果返回码非零,则会引发 CalledProcessError
subprocess.check_outputargs*stdin = Nonestderr = Noneshell = Falseuniversal_newlines = False 

使用参数运行命令并将其输出作为字节字符串返回。如果返回码非零,则会引发 CalledProcessError

subprocess.PIPE
可用作stdin,stdout或stderr参数的特殊值,Popen表示应打开标准流的管道
subprocess.STDOUT
可用作stderr参数的特殊值,Popen表示标准错误应与标准输出位于同一句柄中。
subprocess.STDOUT
可用作stderr参数的特殊值,Popen表示标准错误应与标准输出位于同一句柄中。

参数介绍

args: 要执行的shell命令程序
stdin:执行程序的标准输入,默认值为None stdout:执行程序的标准输出,默认值为None stderr:执行程序标准错误文件句柄,默认值为None shell:如果该参数值为True,则将通过shell执行指定的命令 universal_newlines:如果该参数值为True,则该文件对象的stdin,stdout和stderr将会作为文本流被打开,否则他们将会被作为二进制流被打开

subprocess.Popen

subprocess模块中的基础流程创建和管理都是由 Popen 类处理。Popen 用于在一个新的进程中执行一个子程序

subprocess.Popen(args,bufsize = ,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 =  )

参数介绍

args:是一系列程序参数或者是一个单独的字符串
bufsize:如果给定,与内置open()函数的相应参数具有相同的含义:0表示无缓冲,1表示行缓冲,任何其他正值表示使用(大约)该大小的缓冲区。负值表示使用系统默认值,这通常意味着完全缓冲。bufsize的默认值是0(unbuffered)

stdin,stdout,stderr:分别指定执行程序的标准输入,标准输出和标准错误文件句柄
preexec_fn:如果设置为可调用对象,则在执行子进程之前,将在子进程中调用此对象(仅限Unix)
close_fds:如果为True,所有的文件描述符除外0,1并 2执行子进程之前,将被关闭(仅限Unix)
cwd:如果不是None,则子进程的当前目录在执行之前将更改为cwd的值
env:如果不是None,则它必须是定义新进程的环境变量的映射,如果env=None,那么子进程的环境变量将从父进程中继承
universal_newlines: 如果该参数值为True,则该文件对象的stdin,stdout和stderr将会作为文本流被打开,否则他们将会被作为二进制流被打开
startupinfo:如果给定,将是一个STARTUPINFO对象,它将传递给底层CreateProcess函数(仅限Windows)
creationflags:如果给出,可以是CREATE_NEW_CONSOLE或 CREATE_NEW_PROCESS_GROUP(仅限Windows)

Popen类的方法

Popen.poll()
检查子进程是否已终止。设置并返回 returncode属性。
Popen.wait()
等待子进程终止。设置并返回 returncode属性。
Popen.communicate(input=None)
与进程交互:将数据发送到stdin。从stdout和stderr读取数据,直到达到文件结尾。返回一个元组(stdoutdata, stderrdata)
Popen.send_signal(signal)
将信号信号发送给子进程。
Popen.terminate()
停止子进程
Popen.kill()
杀了子进程

Popen类的属性

Popen.stdin

如果stdin的参数是subprocess.PIPE,则此属性是一个文件对象,它为子进程提供输入。否则就是None。
Popen.stdout
如果stdout的参数是subprocess.PIPE,则此属性是一个文件对象,它提供子进程的输出。否则就是None。
Popen.stderr
如果stderr的参数是subprocess.PIPE,则此属性是一个文件对象,它提供子进程的错误输出。否则就是None。
Popen.pid

子进程的进程ID。
Popen.returncode
子进程的返回码,通过设置poll()和wait()(或间接的communicate())。一个None值表示进程尚未结束。负值-N表示该子进程被信号终止 (仅限Unix)。

subprocess模块详解的更多相关文章

  1. python之subprocess模块详解--小白博客

    subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码.这个模 ...

  2. python subprocess模块详解

    一.subprocess标准库 python执行shell脚本,通常会使用so模块中的几个方法,如system.spawn*.popen等.subprocess标准库的引入就是为了取代这些老的模块方法 ...

  3. subprocess模块详解2

    1.call() 和run功能类似,都是接受一个列表里的参数. >>> import subprocess >>> a = subprocess.call([&qu ...

  4. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  5. python之OS模块详解

    python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...

  6. python之sys模块详解

    python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

  7. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  8. python time 模块详解

    Python中time模块详解 发表于2011年5月5日 12:58 a.m.    位于分类我爱Python 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括: ...

  9. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明  一.简介 ...

随机推荐

  1. BZOJ1053_反素数_KEY

    题目传送门 初看这道题,以为是一道挺难的题目,但仔细看发现,不是只要爆搜就好了吗? 只需要对前12个素数进行爆搜即可. 一个数的因数个数=素数次数+1全部乘起来. code: /*********** ...

  2. [数据结构]_[C/C++]_[链表的最佳创建方式]

    场景 1.链表在C/C++里使用非常频繁, 因为它非常使用, 可作为天然的可变数组. push到末尾时对前面的链表项不影响. 反观C数组和std::vector, 一个是静态大小, 一个是增加多了会对 ...

  3. Python3 之选课系统

    项目介绍:项目名称:(oldboy选课系统)项目功能: 分为 学员视角, 老师视角 , 管理员视角 学员视角{ (注册 登录 个人中心 选课 学习 上课) 登录 就是登录 注册: 填写 资料 信息 完 ...

  4. dubbo之注册管理中心

    一.在dubbo的框架中注册中心是必要的一个环节,这个也是分布式部署的一个必要环节.在dubbo的架构基本图中可以看出,基本上所有的服务都是通过注册中心进行注册,然后在通过注册中心,暴露出接口来. 二 ...

  5. python中- \r用法

    # \r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容 def main(): for i in range(65,91): s="\r{name:s}&quo ...

  6. jQuery个人总结

    选择 1. end()的使用 $('div') .find('h3') .eq(2) .html('Hello') .end() //退回到选中所有的h3元素的那一步 .eq(0) //选中第一个h3 ...

  7. Android intel X86 图像渲染

    最近几天有个项目需要在intel 芯片的系统上集成我们的视频通话软件.之前只是在ARM平台上使用,对于intel 没测试过,直接运行apk后,本端渲染的图像出错,渲染出的图像很像I420被作为RGB5 ...

  8. 基于 CPython 解释器,为你深度解析为什么Python中整型不会溢出

    前言 本次分析基于 CPython 解释器,python3.x版本 在python2时代,整型有 int 类型和 long 长整型,长整型不存在溢出问题,即可以存放任意大小的整数.在python3后, ...

  9. 谜题 (Puzzle,ACM/ICPC World Finals 1993,UVa227)

    题目描述:算法竞赛入门经典习题3-5 题目思路:模拟题 #include <stdio.h> #include <string.h> #define maxn 55 char ...

  10. fp-growth树创建代码及详细注释

    事务集过滤重排: #FP树节点结构 class treeNode: def __init__(self,nameValue,numOccur,parentNode): self.name=nameVa ...