subprocess 子进程模块----day19

subprocess 子进程模块
进程指的是正在运行的程序
子进程,是由另一个运行的程序启动的程序 ,例如qq聊天
为什么要运用子进程? 就是当我们有一个任务处理时自己的程序无法处理所以需要开启另一个程序时

# 总结 当你需要在python中启动一个子进程 并且它进行数据交互时就使用subprocess
# 如果不需要数据交互 可以使用os.system

# import os
# # os.system(r'"D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"')
# res = os.system("dir")
# print(res)
# os.system 在执行系统指令时 也可以命令操作系统启动某个程序

os.system在执行时 直接把结果输出到了 控制台 如果我们要获取执行的结果 就无能为力了

subprocess 不仅可以启动子进程 还能与子进程进行数据交互

import subprocess
# dir 表示要执行命令
# shell 表示dir是一个命令
# stdout指定输出管道
管道是什么? 相当于生活中的水管 水可以通过管道 从一个地方流到另一个地方
# 在程序中 数据相当于水 管道的作用,就从一个进程中把数据传输到另一个进程
# 本质上是读写同一个文件

# p = subprocess.Popen("dir",shell=True,stdout=subprocess.PIPE)
# print(p.stdout.read())
# 上面代码是 启动了一个dir子进程 并将结果输出到指定管道

# 启动一个tasklist子进程 指定输出结果到管道中
p1 = subprocess.Popen("tasklist",shell=True,stdout=subprocess.PIPE)

启动一个findstr的子进程 将p1进程的结果作为p2进程输入
p2 = subprocess.Popen("findstr cmd", # 要执行的指令
shell=False,# 第一个参数是否是一个指令
stdin=p1.stdout, # 指定输入管道
stdout=subprocess.PIPE,#指定输出管道
stderr=subprocess.PIPE) # 表示错误管道 当进程执行出错时 可以在错误管道中获取结果

posted @ 2018-12-10 15:55  WenChen-0o0  阅读(168)  评论(0编辑  收藏  举报