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迭代器的使用方法实例
Nov 21 Python
Python实现配置文件备份的方法
Jul 30 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python2与Python3的区别点整理
Dec 12 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
Selenium基于PIL实现拼接滚动截图
Apr 10 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
python unittest单元测试的步骤分析
Aug 02 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生成WAP页面
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
Python正则表达式匹配ip地址实例
2014/10/09 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
行政助理岗位职责
2013/11/10 职场文书
保护水资源的标语
2014/06/17 职场文书
学生安全责任书模板
2014/07/25 职场文书
机关职员工作检讨书
2014/10/23 职场文书
开幕式邀请函
2015/01/31 职场文书
邀请函范文
2015/02/02 职场文书
承德避暑山庄导游词
2015/02/03 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL