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运算π的值深入Python中科学计算的实现
Apr 17 Python
python3中set(集合)的语法总结分享
Mar 24 Python
python实现kMeans算法
Dec 21 Python
python调用xlsxwriter创建xlsx的方法
May 03 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
Python实现的特征提取操作示例
Dec 03 Python
如何基于python操作excel并获取内容
Dec 24 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
用Python可视化新冠疫情数据
Jan 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
在IIS上安装PHP4.0正式版
2006/10/09 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php中的三元运算符使用说明
2011/07/03 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
理解Javascript闭包
2013/11/01 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
个人求职简历的自我评价范文
2013/10/09 职场文书
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
六年级数学教学反思
2014/02/03 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
气象学专业个人求职信
2014/03/15 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
上下班时间调整通知
2015/04/23 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
日元符号 ¥
2022/02/17 杂记