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中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Python中的连接符(+、+=)示例详解
Jan 13 Python
Python有序字典简单实现方法示例
Sep 28 Python
简单了解Django模板的使用
Dec 20 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
django解决跨域请求的问题
Nov 11 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Python进度条的制作代码实例
Aug 31 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
python中sympy库求常微分方程的用法
Apr 28 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格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
js常用函数 不错
2006/09/08 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
节约粮食标语
2014/06/18 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
工程索赔意向书
2014/08/30 职场文书
涨价通知
2015/04/23 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python