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字符串匹配算法KMP实例
Jul 18 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
python对csv文件追加写入列的方法
Aug 01 Python
python打造爬虫代理池过程解析
Aug 15 Python
python实现复制大量文件功能
Aug 31 Python
python中如何进行连乘计算
May 28 Python
Python常见反爬虫机制解决方案
Jun 01 Python
python def 定义函数,调用函数方式
Jun 02 Python
python要安装在哪个盘
Jun 15 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP strtotime函数详解
2009/12/18 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
Javascript模板技术
2007/04/27 Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
python使用pil生成缩略图的方法
2015/03/26 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
python文件操作的简单方法总结
2019/11/07 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
如何理解python中数字列表
2020/05/29 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
餐饮投资计划书
2014/04/25 职场文书
授权委托书格式
2014/07/31 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python