当前位置: 移动技术网 > IT编程>脚本编程>Python > python调用shell的方法

python调用shell的方法

2019年04月02日  | 移动技术网IT编程  | 我要评论

央金兰泽歌曲下载,88电影,hario

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('//www.jb51.net'),也可以利用
webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是url,不知道在linux下是否可行。
以上在windows2000,python2.4a1,wxpython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网