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安装第三方库的3种方法
Jun 21 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
Python之py2exe打包工具详解
Jun 14 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
python使用opencv resize图像不进行插值的操作
Jul 05 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
Python识别处理照片中的条形码
Nov 16 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 Python
Django rest framework如何自定义用户表
Jun 09 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
mysql时区问题
2008/03/26 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php导出CSV抽象类实例
2014/09/24 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP实现八皇后算法
2019/05/06 PHP
网上抓的一个特效
2007/05/11 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python函数的周期性执行实现方法
2016/08/13 Python
python实现超市扫码仪计费
2018/05/30 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
销售自荐信
2013/10/22 职场文书
铁路个人事迹材料
2014/01/30 职场文书
暑期社会实践方案
2014/02/05 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
高二语文教学反思
2016/02/16 职场文书