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中的try和finally和with方法
May 05 Python
python xml解析实例详解
Nov 14 Python
图解Python变量与赋值
Apr 03 Python
Python装饰器知识点补充
May 28 Python
Python运行DLL文件的方法
Jan 17 Python
python定义类的简单用法
Jul 24 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
python批量修改交换机密码的示例
Sep 22 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
python文件名批量重命名脚本实例代码
Apr 22 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
建站常用13种PHP开源CMS比较
2009/08/23 PHP
php定界符
2014/06/19 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
JavaScript实现拼音排序的方法
2012/11/20 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
Python使用剪切板的方法
2017/06/06 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
python如何实现DES加密
2020/09/21 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
公司员工的自我评价范例
2013/11/01 职场文书
《母鸡》教学反思
2014/02/25 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
Mybatis是这样防止sql注入的
2021/12/06 Java/Android
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python