python调用shell的方法


Posted in Python onNovember 20, 2013

1.1  os.system(command)

在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

1.2  os.popen(command,mode)

打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是'r')。如果mode为'r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

1.3  commands.getstatusoutput(command)

使用os. getstatusoutput ()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。

2.1  subprocess.call(["some_command","some_argument","another_argument_or_path"])

subprocess.call(command,shell=True)

2.2  subprocess.Popen(command, shell=True)

如果command不是一个可执行文件,shell=True不可省。
使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。
最简单的方法是使用class subprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。

将调用shell的结果赋值给python变量

handle = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
print handle.communicate()[0]

在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法一般有这么几个:

1、os.system(command)

2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)

若置syn为wx.EXEC_ASYNC则wx.Excute函数立即返回,若syn=wx.EXEC_SYNC则等待调用的程序结束后再返回。

callback是一个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调用wx.Process.OnTerminate()函数。

os.system()和wx.Execute()都利用系统的shell,执行时会出现shell窗口。如在Windows下会弹出控制台窗口,不美观。下面的两种方法则没有这个缺点。

3、class subprocess.Popen

最简单的用法是:

import subprocess
subprocess.Popen(command, shell=True)

如果command不是一个可执行文件,shell=True不可省。

前面三个方法只能用于执行程序和打开文件,不能处理URL,打开URL地址可用webbrowser模块提供的功能。

4、webbrowser.open(url)

调用系统缺省浏览器打开URL地址,如 webbrowser.open('https://3water.com'),也可以利用
webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)

Python 相关文章推荐
Python中IPYTHON入门实例
May 11 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
PyQt 线程类 QThread使用详解
Jul 16 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
python 用下标截取字符串的实例
Dec 25 Python
简单了解python变量的作用域
Jul 30 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 Python
python如何写try语句
Jul 14 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
Python爬虫之Selenium下拉框处理的实现
Dec 04 Python
python反扒机制的5种解决方法
Feb 06 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
python和shell变量互相传递的几种方法
Nov 20 #Python
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 #Python
python从ftp下载数据保存实例
Nov 20 #Python
python正则表达式抓取成语网站
Nov 20 #Python
python爬取网站数据保存使用的方法
Nov 20 #Python
使用python搭建Django应用程序步骤及版本冲突问题解决
Nov 19 #Python
python解析json实例方法
Nov 19 #Python
You might like
人大复印资料处理程序_输入篇
2006/10/09 PHP
PHP 防注入函数(格式化数据)
2011/08/08 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
js实现返回顶部效果
2017/03/10 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
python 美化输出信息的实例
2018/10/15 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python3实现高效的端口扫描
2019/08/31 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python requests模块session代码实例
2020/04/14 Python
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
2014年煤矿工人工作总结
2014/12/08 职场文书