communicate(input=None, timeout=None):进程交互:发送数据到stdin,读取stdout或stderr的数据知道读取到结束符。返回(stdout_data, stderr_data)形式的元组,元组类型是string或byte。
input为None或要发送到子进程的数据,根据stream打开模式的不同,可以是string或byte类型。
如果要和进程的stdin交互,创建Popen对象时需要指定stdin=PIPE。类似的,返回的tuple如果希望是非None,需要设置stdout=PIPE和/或stderr=PIPE。
如果子进程在timeout后没有终止,抛出TimeoutExpired异常,但子进程并未kill掉,一个良好的应用应该kill掉子进程并结束交互:
1 2 3 4 5 6 |
|
send_signal(signal):发送信号到子进程
terminate():终止子进程。POSIX系统上,发送SIGTERM信号到子进程,Windows系统上会调用TerminateProcess()终止进程
kill():强制终止子进程。POSIX系统上,发送SIGKILL信号到子进程。Windows系统上kill()是terminate()的别名
属性
args:传入Popen
构造器的第一个参数,list或string类型
stdin:如果传递给Popen的stdin参数是PIPE,该属性表示string或byte类型的可写stream对象。如果传递给Popen的stdin参数不是PIPE,此属性值为None
stdout:与Popen.stdin相近,但stream对象是可读的
stderr:与Popen.stdout相近
pid:子进程进程号。如果设置了shell=True,pid表示派生shell的进程号
returncode:子进程返回码,None表示进程未终止。负数-N表示进程被信号N终止(仅限POSIX)。
CompletedProcess
run()
函数运行的返回值,表示进程执行完成。
属性
args:传入run()
函数的第一个参数,list或string类型
returncode:子进程退出码。如果为负数,表示进程因为某个信号退出
stdout:捕获的子进程的标准输出,默认为byte类型,如果run()
函数调用时指定了encoding或errors,或设置了text=True则为string类型。如果未捕获标准输出返回None
stderr:捕获的子进程的标准错误,默认为byte类型,如果run()
函数调用时指定了encoding或errors,或设置了text=True则为string类型。如果未捕获标准错误返回None
方法
check_returncode():如果returncode非0,抛出CalledProcessError
异常
异常
subprocess.SubprocessError
subprocess模块的异常基类
subprocess.TimeoutExpired
子进程执行超时。
属性
cmd:指令
timeout:秒为单位的时间
output:run()
或check_output()
函数捕获到的子进程的输出,否则为None
stdout:output属性别名
stderr:run()
函数捕获到的子进程的错误输出,否则为None
subprocess.CalledProcessError
check_call()
或check_output()
函数返回非0状态码时抛出。
属性
returncode:子进程退出码。如果为负数,表示进程因为某个信号退出
cmd:同TimeoutExpired
output:同TimeoutExpired
stdout:同TimeoutExpired
stderr:同TimeoutExpired
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的python视频教程栏目!
以上就是python中subprocess类与常量的详细介绍的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
搭建 Python +pycharm+django将sqlite3 迁移到mysql
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。