python调用shell命令

python调用shell命令python

1.1   os.system(command)web

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

1.2   os.popen(command,mode)浏览器

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

1.3   commands.getstatusoutput(command)google

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

 

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

        subprocess.call(command,shell=True)orm

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程序中启动另外一个程序的方法通常有这么几个:

一、os.system(command)

二、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下会弹出控制台窗口,不美观。下面的两种方法则没有这个缺点。

三、class subprocess.Popen

     最简单的用法是:

     import subprocess

     subprocess.Popen(command, shell=True)

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

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

四、webbrowser.open(url)

     调用系统缺省浏览器打开URL地址,如 webbrowser.open('http://www.google.com'),也能够利用

     webbrowser.open('h:\python.zip')来执行程序。这样能够没必要区分是文件名仍是URL,不知道在Linux下是否可行。

以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。

modify:还有一种方式:subprocess.call(*args, **kwargs)

相关文章
相关标签/搜索