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 相关文章推荐
bat和python批量重命名文件的实现代码
May 19 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
学python安装的软件总结
Oct 12 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
python3 logging日志封装实例
Apr 08 Python
python和php学习哪个更有发展
Jun 17 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
Python图片验证码降噪和8邻域降噪
Aug 30 Python
7个关于Python的经典基础案例
Nov 07 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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
Zend的Registry机制的使用说明
2013/05/02 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
JS实现多功能计算器
2020/10/28 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python 硬币兑换问题
2019/07/29 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
公司拓展活动方案
2014/02/13 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
留守儿童工作方案
2014/06/02 职场文书
物业保安岗位职责
2014/07/02 职场文书
中秋节活动总结
2014/08/29 职场文书
公司收款委托书范本
2014/09/20 职场文书
师德师风剖析材料
2014/09/30 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python