python中subprocess模块
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模块的更多相关文章
- Python中subprocess 模块 创建并运行一个进程
python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex ...
- python的subprocess模块(写的不错留作查询)
python的subprocess模块 subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*. ...
- python中os模块中文帮助
python中os模块中文帮助 python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- Python中的模块介绍和使用
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...
- python中导入模块的本质, 无法导入手写模块的解决办法
最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
随机推荐
- Windows10 VS2017 C++ ini解析(使用simpleini头文件)
simpleini项目地址: https://github.com/brofield/simpleini 下载,新建项目,并将SimpleIni.h文件通过包含目录的方式加载进来. 创建test.in ...
- phpcms 加载微信类库,生成签名
在phpcms 中 pc_base:load_config(文件名) 用于加载配置文件,配置文件存放于phpcms目录下的caches/configs中 在控制器新增加载微信类库的方法: /** * ...
- Restful架构学习
Restful规范的架构是一种简洁并且面向资源的规范方式,其概念和起源大家google一下就好. 以下记录认识和搭建Restful规范的技术架构过程(入门级别),在网上发现了一张技术架构图很接近最初想 ...
- python 5
一.python2与3的差别 在2中,range是一个数字列表 xrange是一个可迭代对象 在3中,range是一个可迭代对象 没有xrange 二.dict dict长什么样? 一个key对应一个 ...
- Linux上安装MangoDB
版本 MongDB4.0.3 安装 tar -zxvf mongodb-linux-x86_64-rhel62-4.0.3.tgz默认的数据目录在/data/db,也可以指定目录启动命令./bin/m ...
- 账户和联系人 Accounts and Contacts 译
原文链接: https://crmbook.powerobjects.com/basics/searching-and-navigation/understanding-accounts-and-co ...
- Spring IOC 相关的面试题
Spring最基础的部分就是IOC,对IOC的理解程度从某个方面代表着你对Spring 的理解程度,看了网上的一些面试题,针对Spring IOC相关的重点是下面几个: 1.Spring中Bean ...
- CSS 社区的解决方案,对比
在众多解决方案中,没有绝对的优劣.还是要结合自己的场景来决定. 我们团队在使用过 scss 和 css modules 后,仍然又重新选择了使用 scss.css modules 虽然有效解决了样式冲 ...
- 第三章 C#程序结构(3.1 顺序与选择结构)
[案例]输入某一学生的成绩,输出其对应的档次.具体规定:90分以上为优秀,80分以上至89分为良好,70分至79分为一般,60分至69分为合格,59以下为不及格.如果输入的分数小于0或大于100,则输 ...
- Eclipse+PyDev 安装和配置
Eclipse+PyDev 安装和配置 2012-03-17 23:23:23 | 17465次阅读 | 评论:0 条 | Python开发有很多工具,其中Eclipse+Pydev 是最常见的一种 ...