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列表与元组详解实例
Nov 01 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python实现邮件的批量发送的示例代码
Jan 23 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
python生成九宫格图片
Nov 19 Python
基于YUV 数据格式详解及python实现方式
Dec 09 Python
Keras loss函数剖析
Jul 06 Python
python实现模拟器爬取抖音评论数据的示例代码
Jan 06 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
Python卷积神经网络图片分类框架详解分析
Nov 07 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP同时连接多个mysql数据库示例代码
2014/03/17 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
Vue中CSS动画原理的实现
2019/02/13 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现求两个csv文件交集的方法
2017/09/06 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python中的global关键字的使用方法
2019/08/20 Python
python中p-value的实现方式
2019/12/16 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
英国绿色商店:Natural Collection
2019/05/03 全球购物
优秀中专生推荐信
2013/11/17 职场文书
关于幼儿的自我评价
2013/12/18 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
幼儿园运动会入场词
2014/02/10 职场文书
治安消防安全责任书
2014/07/23 职场文书
python如何进行基准测试
2021/04/26 Python