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对Csv文件操作实例代码
May 12 Python
Django的分页器实例(paginator)
Dec 01 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
使用Python的turtle模块画国旗
Sep 24 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
Tensorflow训练模型越来越慢的2种解决方案
Feb 07 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
js创建数组的简单方法
2016/07/27 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
python实现的系统实用log类实例
2015/06/30 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python中文件变化监控示例(watchdog)
2017/10/16 Python
Python实现进程同步和通信的方法
2018/01/02 Python
zookeeper python接口实例详解
2018/01/18 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
pandas 选择某几列的方法
2018/07/03 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
物流仓储实习自我鉴定
2013/09/25 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
党员自我批评与反省材料
2014/02/10 职场文书