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 json encode datetime类型
Dec 28 Python
python logging类库使用例子
Nov 22 Python
Python变量作用范围实例分析
Jul 07 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python交易记录整合交易类详解
Jul 03 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
python hashlib加密实现代码
Oct 17 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
详解python对象之间的交互
Sep 29 Python
学点简单的Django之第一个Django程序的实现
Feb 24 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
PHP往XML中添加节点的方法
2015/03/12 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP实现微信发红包程序
2015/08/24 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
javascript常见操作汇总
2014/09/03 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python制作爬虫抓取美女图
2016/01/20 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
科研先进个人典型材料
2014/01/31 职场文书
总经理助理职责
2014/02/04 职场文书
经销商订货会主持词
2014/03/27 职场文书
校庆活动策划方案
2014/06/05 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
微信搭讪开场白
2015/05/28 职场文书