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中的__SLOTS__属性使用示例
Feb 18 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
python 实时遍历日志文件
Apr 12 Python
python中subprocess批量执行linux命令
Apr 27 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
使用python模拟高斯分布例子
Dec 09 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python3.6使用SMTP协议发送邮件
May 20 Python
解决python运行效率不高的问题
Jul 20 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/01/10 PHP
php Session存储到Redis的方法
2013/11/04 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
jQuery 操作XML入门
2008/12/25 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
如何清空python的变量
2020/07/05 Python
remote接口和home接口主要作用
2013/05/15 面试题
好的旅游活动方案
2014/08/19 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python