python中调用命令行命令
python中调用命令行命令
在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法
1、os.system(command)
os.system()函数用来运行shell命令。此命令可以方便的调用或执行其他脚本和命令
- #打开指定的文件 >>>os.system('notepad *.txt')
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、import subprocess
subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
subprocess.call ([
cmd
,
arg1
,
arg2
],shell
=
True
)
Note:
1. 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数。
2. 如果command(args)不是一个可执行文件,shell=True不可省
3. Popen.wait()可以得到命令的返回值
举个栗子
if subprocess.Popen('dir /b %s' % filename, shell=True).wait() == 0如果filename字符串中有空格,则会出现错误:File Not Found错误
可以通过下面[
cmd
,
arg1
,
arg2
]
两种方式
if subprocess.Popen([dir, /b, filename], shell=True).wait() == 0
if subprocess.call([dir, /b, filename], shell=True) == 0
[Python中subprocess学习]
4、webbrowser.open(url)
前面三个方法只能用于执行程序和打开文件,不能处理URL,打开URL地址可用webbrowser模块提供的功能。
调用系统缺省浏览器打开URL地址,如 webbrowser.open('http://www.jb51.net'),也可以利用
webbrowser.open('h:python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
[python调用shell的方法]
评论关闭