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基础教程之基本内置数据类型介绍
Feb 20 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
跟老齐学Python之坑爹的字符编码
Sep 28 Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
python字符串与url编码的转换实例
May 10 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
python移位运算的实现
Jul 15 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 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
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
PHP PDO函数库详解
2010/04/27 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Python注释详解
2016/06/01 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
解决python运行启动报错问题
2020/06/01 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
最新党员思想汇报
2014/01/01 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
网站客服岗位职责
2014/04/05 职场文书
法人代表证明书
2014/09/18 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js