Python标准库:子进程 (subprocess包)
来源:互联网 发布:淘宝微淘买家秀怎么发 编辑:程序博客网 时间:2024/05/03 15:03
subprocess包主要功能是执行外部的命令和程序,比如执行linux命令并得到输出结果,另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。
类似于fork()函数和exec函数() ,但是封装了更多更强大的功能。
1.常用函数
(1)、subprocess.call()
父进程等待子进程完成
返回退出信息(returncode,相当于exit code)
(2)、subprocess.check_call()
父进程等待子进程完成
返回0
检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含有returncode属性,可用try...except...来检查(见Python错误处理)。
(3)、subprocess.check_call()
父进程等待子进程完成
返回子进程向标准输出的输出结果
检查退出信息,如果returncode不为0,则举出错误subprocess.CalledProcessError,该对象包含有returncode属性和output属性,output属性为标准输出的输出结果,可用try...except...来检查。
代码
import subprocessrc = subprocess.call(["ls","-l"], shell=True)
会在shell输出
import subprocessrc = subprocess.check_call(["ls","-l"], shell=True)print(rc)
输出rc=0
2.Popen()
与上面的封装不同,Popen对象创建后,主程序不会自动等待子进程完成。我们必须调用对象的wait()方法,父进程才会等待 (也就是阻塞block):l
import subprocesschild = subprocess.Popen(["sleep", "2"])print("I am parent")
会直接执行
print("I am parent")
方法:
child.poll() # 检查子进程状态
child.kill() # 终止子进程
child.send_signal() # 向子进程发送信号
child.terminate() # 终止子进程
3.子进程的文本流控制
<span style="font-size:14px;">#主要有三个属性#child.stdin#child.stdout#child.stderrimport subprocesschild1 = subprocess.Popen(["uname","-a"], stdout=subprocess.PIPE)child2 = subprocess.Popen(["wc"], stdin=child1.stdout,stdout=subprocess.PIPE)out = child1.communicate()print(out)out = child2.communicate()print(out)#subprocess.PIPE将多个子进程的输入和输出连接在一起,构成管道(pipe)#subprocess.PIPE实际上为文本流提供一个缓存区。child1的stdout将文本输出到缓存区,#随后child2的stdin从该PIPE中将文本读取走。child2的输出文本也被存放在PIPE中,直到communicate()方法从PIPE中读取出PIPE中的文本。#要注意的是,communicate()是Popen对象的一个方法,该方法会阻塞父进程,直到子进程完成。</span>
输出:
(b'Linux leo 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux\n', None)
(b' 0 0 0\n', None)
(b' 0 0 0\n', None)
0 0
- Python标准库:子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库 子进程 (subprocess包) 的说明
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- 6.Python标准库_子进程 (subprocess包)
- Python标准库06 子进程 (subprocess包)
- Python 子进程 (subprocess包)
- Python子进程 (subprocess包)
- python 子进程subprocess
- Python学习笔记13:标准库之子进程(subprocess包)
- python安全管理子进程-subprocess
- Python子进程 subprocess模块
- NOIP 2006 2^k进制数
- 104. Maximum Depth of Binary Tree(unsolved)
- iOS开发 WKWebView的使用
- 如何利用HBuilder快速设置外部web服务器来测试移动web
- 【Zookeeper学习】(二):Curator与Fluent编程风格
- Python标准库:子进程 (subprocess包)
- 文章标题
- Java4android学习笔记20-21
- Python中re(正则表达式)学习
- 笔记记录地址
- X509从证书验证和创建Base64字符串
- 类 封装
- App项目实战之路(六):数据库篇
- 【备忘】2016 Micu课堂王铎UI图标设计特训班高级高清原版教程