Python中subprocess模块用法实例详解


Posted in Python onMay 20, 2015

本文实例讲述了Python中subprocess模块用法。分享给大家供大家参考。具体如下:

执行命令:

>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1

测试调用系统中cmd命令,显示命令执行的结果:

x=subprocess.check_output(["echo", "Hello World!"],shell=True)
print(x)
"Hello World!"

测试在python中显示文件内容:

y=subprocess.check_output(["type", "app2.cpp"],shell=True)
print(y) 
#include <iostream>   
using namespace std;  
......

查看ipconfig -all命令的输出,并将将输出保存到文件tmp.log中:

handle = open(r'd:\tmp.log','wt')
subprocess.Popen(['ipconfig','-all'], stdout=handle)

查看网络设置ipconfig -all,保存到变量中:

output = subprocess.Popen(['ipconfig','-all'], stdout=subprocess.PIPE,shell=True)
oc=output.communicate()#取出output中的字符串
#communicate() returns a tuple (stdoutdata, stderrdata).
print(oc[0]) #打印网络信息
Windows IP Configuration
    Host Name . . . . .

我们可以在Popen()建立子进程的时候改变标准输入、标准输出和标准错误,并可以利用subprocess.PIPE将多个子进程的输入和输出连接在一起,构成管道(pipe):

child1 = subprocess.Popen(["dir","/w"], stdout=subprocess.PIPE,shell=True)
child2 = subprocess.Popen(["wc"], stdin=child1.stdout,stdout=subprocess.PIPE,shell=True)
out = child2.communicate()
print(out)
 ('   9   24   298\n', None)

如果想频繁地和子线程通信,那么不能使用communicate();因为communicate通信一次之后即关闭了管道.这时可以试试下面的方法:

p= subprocess.Popen(["wc"], stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
p.stdin.write('your command')
p.stdin.flush()
#......do something
try:
  #......do something
  p.stdout.readline()
  #......do something
except:
  print('IOError')
#......do something more
p.stdin.write('your other command')
p.stdin.flush()
#......do something more

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python使用os模块的os.walk遍历文件夹示例
Jan 27 Python
Python中无限元素列表的实现方法
Aug 18 Python
Python实现从百度API获取天气的方法
Mar 11 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
python使用dlib进行人脸检测和关键点的示例
Dec 05 Python
python 多线程爬取壁纸网站的示例
Feb 20 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
python检测某个变量是否有定义的方法
May 20 #Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 #Python
python使用PyGame模块播放声音的方法
May 20 #Python
python实现带声音的摩斯码翻译实现方法
May 20 #Python
python定时检查某个进程是否已经关闭的方法
May 20 #Python
Python操作列表之List.insert()方法的使用
May 20 #Python
Python中List.index()方法的使用教程
May 20 #Python
You might like
JpGraph php柱状图使用介绍
2011/08/23 PHP
深入解析PHP中逗号与点号的区别
2013/08/05 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
Python中使用dom模块生成XML文件示例
2015/04/05 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python日志器使用方法及原理解析
2020/09/27 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
爷爷追悼会答谢词
2014/01/24 职场文书
数学国培研修感言
2014/02/13 职场文书
运动会广播稿150字
2014/02/19 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
继续教育个人总结
2015/03/03 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
公司年会主持词范文!
2019/05/07 职场文书
详解Vue的options
2021/05/15 Vue.js
MySql开发之自动同步表结构
2021/05/28 MySQL
Go语言基础函数基本用法及示例详解
2021/11/17 Golang
Spring中的@Transactional的工作原理
2022/06/05 Java/Android