python执行外部程序的常用方法小结


Posted in Python onMarch 21, 2015

本文实例总结了python执行外部程序的常用方法。分享给大家供大家参考。具体分析如下:

在python中我们可以通过下面的方法直接调用系统命令或者外部程序,使用方便

1、os模块的execl方法

Python的execl系统方法同Unix的exec系统调用是一致的。这些方法适用于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回。
也就是说,这个shell进程被占领,将执行第一个execl的命令程序而不再返回。

2、使用os模块的system方法

system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。这个方法比较适用于外部程序没有输出结果的情况。比如在Ubuntu下,使用下面命令在桌面上显示一条提示信息。
根据我的实验,用system方法调用的进程正常结束返回0,异常结束返回非0,而不取决于进程主函数的返回值。

3、使用os模块的popen方法

当需要得到外部程序的输出结果时,本方法非常有用。比如使用urllib调用Web API时,需要对得到的数据进行处理。一个使用例子如下:

cmd = "ssh search47c.cm2 \"" + query + "\""
#print cmd + "<br>"
output = os.popen(cmd)
#对特殊字符进行转义
temp1 = output.read().replace('<','<')
temp2 = temp1.replace('>', ">")
temp3 = temp2.replace('\n', "<br>")
print temp3.replace('/', "/")

4、使用commands模块的getoutput方法(没用过)

这种方法同popend的区别在于popen返回的是一个文件句柄,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python的字典和列表的使用中一些需要注意的地方
Apr 24 Python
讲解Python中的递归函数
Apr 27 Python
python字符串过滤性能比较5种方法
Jun 22 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
django认证系统 Authentication使用详解
Jul 22 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
PyQt5实现登录页面
May 30 Python
python新手学习使用库
Jun 11 Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 Python
python各种excel写入方式的速度对比
Nov 10 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 #Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 #Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 #Python
python中Flask框架简单入门实例
Mar 21 #Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 #Python
Python去除列表中重复元素的方法
Mar 20 #Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 #Python
You might like
第十四节 命名空间 [14]
2006/10/09 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
python实现C4.5决策树算法
2018/08/29 Python
python 生成图形验证码的方法示例
2018/11/11 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
Python基于template实现字符串替换
2020/11/27 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
一道Delphi上机题
2012/06/04 面试题
安全生产检查通报
2014/01/29 职场文书
应届生求职信
2014/05/31 职场文书
安全标语大全
2014/06/10 职场文书
Python基础之元编程知识总结
2021/05/23 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python
Windows server 2003卸载和安装IIS的图文教程
2022/07/15 Servers