subprocess  模块

subprocess称之为子进程,进程是一个正在进行的程序

子进程是由另一个正在运行的程序启动的程序,例如QQ聊天点击一个链接,打开了浏览器,那么浏览器称之为QQ的子进程

为什么要子进程?

当我们有个一任务需要处理,而自己无法处理,需要其他程序处理

import os
​
os.system(r'"D:\ProgramFiles(x86)\Tencent\QQ\Bin\QQScLauncher.exe"')
res = os.system("dir")
print(res)
​
#在os模块中,os.system在执行系统指令时,也可以命令操作系统启动某个程序
​
​
#os.system和subprocess的区别
os.system在执行的时候,直接将结果输出到控制台,如果我们要获取了执行结果,就无能为力了
subprocess不仅可以启动子进程,还能与子进程进行交互
​
​
#subprocess的具体用法
import subprocess
p = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE)
print(p.stdout.read())
​
#上述代码是启动了一个dir的子程序,并将结果输出到指定的管道位置
dir 表示要执行的命令
​
shell 表示dir是一个命令
​
stdout 指定输出的管道位置
​
#什么是管道?
#管道类似于生活中的水管,从一端给入介质,在另一端将收到同样的介质。在程序中,数据就相当于介质,管道的作用就是从一个进程中把数据传输到另一个进程
#本质就是读写同一个文件
#eg:
p1 = subprocess.Popen('tasklist',
shell=True,
stdout=subprocess.PIPE)
p2 = subprocess.Popen('findstr cmd',#要执行的指令 cmd是参数指令
shell=True, #第一个参数是否是指令
stdin=p1.stdout, #指定输入管道
stdout=subprocess.PIPE, #指定输出管道
stderr=subprocess.PIPE) #指定错误管道,当进程出错时,可在错误管道获取结果
​
# 读取p2进程的结果
print(p2.stdout.read())
print(p2.stderr.read().decode("GBK"))
#在p1中是启动一个tasklist的子进程,指定输出结果到管道中
#p2是启动一个findstr的子进程,将p1进程结果作为p2进程输入
1.当需要在python程序中启动子进程时,如果需要数据交互就要用subprocess
2.当不需要数据交互时,可以使用os.system

python中subprocess模块的更多相关文章

  1. Python中subprocess 模块 创建并运行一个进程

     python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex ...

  2. python的subprocess模块(写的不错留作查询)

    python的subprocess模块 subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*. ...

  3. python中os模块中文帮助

    python中os模块中文帮助   python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...

  4. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  5. python中threading模块详解(一)

    python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...

  6. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  7. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

  8. python中导入模块的本质, 无法导入手写模块的解决办法

    最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...

  9. Python中time模块详解

    Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...

随机推荐

  1. BCP导出数据到EXCEL

    SET @FilePath='D:\TEST.xls' SET @sql='bcp "SELECT * FROM XXX.dbo.XXX WITH(NOLOCK) WHERE XXX=''X ...

  2. 爬虫案例(js动态生成数据)

    需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...

  3. Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)

    1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重 ...

  4. 3.python集合

    1.集合1.不同元素组成2.无序排列的可hash值3.集合中元素必须是不可变类型(数字,字符串,元祖) 2.集合创建:(1)定义可变类型集合set:把里面元素一个一个进行for循环往大括号里放 set ...

  5. 《Linux内核原理与分析》第三周作业

    实验:基于kernel的简单的时间片轮转多道程序内核 1.实验要求 完成一个简单的时间片轮转多道程序内核代码 2.实验过程 进入实验楼的linux环境,打开shell,输入以下代码: cd Linux ...

  6. python: ImportError:DLL load failed 解决方法。

    在学习使用wordcloud 库创建词云过程中,mooc里提到可以使用另一个库函数,来创建不同形状的词云. 就是这句: ... from scipy.misc import imread mk = i ...

  7. django jquery ajax 知识点

    示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <div id='d'>1</div> <div> <div id='i1' nam ...

  8. java Scanner中next和nextLine()区别

    next(): 1.一定要读取到有效字符后才可以结束输入. 2.对输入有效字符之前遇到的空白,next() 方法会自动将其去掉. 3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符. ne ...

  9. java中URL和File的相互转化

    首先,想比较一下这两者的不同.URL用于网络,所以带有明显的protocol,而且对于中文及符号支持的很不好.File就是我们平常系统中的文件路径了,对于中文及符号都支持,但是已经没有protocol ...

  10. uip移植telnetd并加入自己定义命令

    版权声明: https://blog.csdn.net/cp1300/article/details/30541507 刚刚移植了一下uip的telnetd,还是比較简单方便的. 首先加入文件,注意u ...