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)
  • 注意:
  • 这里的管道只能读取一次,第二次就拿不到数据了。