Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251400
  • 博文数量: 91
  • 博客积分: 4185
  • 博客等级: 上校
  • 技术积分: 855
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-29 16:18
文章分类

全部博文(91)

文章存档

2014年(3)

2013年(1)

2012年(8)

2011年(2)

2010年(5)

2009年(68)

2008年(4)

我的朋友

分类: Python/Ruby

2009-05-01 10:34:33


在Python环境下,执行一条外部命令一般有这么几个:
1、os.system(command)或者os.popen(..........)

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(''),也可以利用
      webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。

以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)
阅读(7503) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~