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流程控制语句
Dec 04 Python
对python读取CT医学图像的实例详解
Jan 24 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 Python
TensorFlow 显存使用机制详解
Feb 03 Python
Django自定义列表 models字段显示方式
Apr 03 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
python实现三壶谜题的示例详解
Nov 02 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 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中去掉字符串首尾空格的方法
2012/05/19 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python实现简单flappy bird
2018/12/24 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
django 控制页面跳转的例子
2019/08/06 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
心得体会怎么写
2013/12/30 职场文书
五年级数学教学反思
2014/02/11 职场文书
财务总监管理职责范文
2014/03/09 职场文书
工程资料员岗位职责
2014/03/10 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
小数乘法教学反思
2016/02/22 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB