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基于动态规划算法计算单词距离
Jul 25 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
详解python多线程、锁、event事件机制的简单使用
Apr 27 Python
python pygame模块编写飞机大战
Nov 20 Python
python替换字符串中的子串图文步骤
Jun 19 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
浅谈Django前端后端值传递问题
Jul 15 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
使用python创建股票的时间序列可视化分析
Mar 03 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生成自己的LOG文件
2006/10/09 PHP
php数组编码转换示例详解
2014/03/11 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
2015/11/17 Javascript
jQuery实现的自适应焦点图效果完整实例
2016/08/24 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
python threading模块操作多线程介绍
2015/04/08 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python制作Windows系统服务
2017/03/25 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python常用排序算法的实现代码
2019/11/08 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
检举信的格式及范文
2014/04/04 职场文书
公司股东合作协议书
2014/09/14 职场文书
2015年招聘工作总结
2014/12/12 职场文书
地道战观后感300字
2015/06/04 职场文书
社区宣传标语口号
2015/12/26 职场文书
python - timeit 时间模块
2021/04/06 Python
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电