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数组遍历的简单实现方法小结
Apr 27 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
Python MD5加密实例详解
Aug 02 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
Apr 19 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
python构建基础的爬虫教学
Dec 23 Python
Python3多线程基础知识点
Feb 19 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
python中%格式表达式实例用法
Jun 18 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
set_include_path在win和linux下的区别
2008/01/10 PHP
关于php fread()使用技巧
2010/01/22 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php对数组排序代码分享
2014/02/24 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
Python中的super()方法使用简介
2015/08/14 Python
详解Python文本操作相关模块
2017/06/22 Python
python实现Virginia无密钥解密
2019/03/20 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
python中bytes和str类型的区别
2019/10/21 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
flask 实现token机制的示例代码
2019/11/07 Python
python MD5加密的示例
2020/10/19 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
白酒业务员岗位职责
2013/12/27 职场文书
初三学习决心书
2014/03/11 职场文书
大学生标准自荐书
2014/06/15 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
房贷工资证明范本
2015/06/12 职场文书
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers