Python学习笔记-常用模块介绍--subprocess函数
1.什么是subprocess?
- 是英文翻译过来,是子进程的意思。
- sub 儿子 ;process 进程
2.示例1:
import subprocess # sub是儿子的意思,这个函数是开启了子进程。
import time
res = subprocess.Popen("tasklist",shell=True)
# shell=True 是调用命令解释器来解释 tasklist 这个字符串
# P 是process的意思
# Popen 是开启一个进程的意思。
time.sleep(3) # 给子进程执行留些时间
print(res)
3.subprocess是子进程,主进程想拿到子进程的内容怎么拿?
- 借用管道。
4.那么管道是什么?
- 进程与进程之间是隔离的,他们的内容不能互通,怎么办呢?
- 我们在两个隔离的空间中,开一个洞,打通一个管道,这样他们就可以传输内容了。
5. 那么,怎么在子进程和主进程之间创建管道呢?
- 调用subprocess的时候,增加参数,subprocess.PIPE
- 示例:
obj = subprocess.Popen("tasklist",shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
print(obj)
print(obj.stdout.read()) # 读取数据 byte类型
print(obj.stdout.read().decode("GBK")) # 读取数据后进行解码
- 参数解释:
- stdout:标准输出
- stderr:错误输出
- subprocess.PIPE 打开一个管道
- obj 返回一个对象,
- obj.stdout.read() 通过返回的对象,的标准输出管道,读取数据,byte类型。
- obj.stdou.read().decode('GBK') 通过返回的对象,的标准输出管道,读取数据后,用GBK解码显示 (windows操作系统下,默认是GBK)
- 注意:
- 这里的管道只能读取一次,第二次就拿不到数据了。