os.system(command)
类似c语言里的system函数,只能执行命令,无法获取输出,返回值跟c类似,将shell的返回值放到了8-15位
os.popen(command [, mode='r' [, bufsize]])
也跟c语言类似,c语言返回的是一个文件流指针,python返回的是一个文件对象,可以用read方法读取文件对象的内容,但无法获取返回值
commands.getstatusoutput(command)
使用commands.getstatusoutput函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。
subprocess模块的管道Popen类.这个Popen是打算用来替代os.popen的方法,有点复杂,有兴趣可以自己学习一下:
print subprocess.Popen("echo Hello World", shell=True,stdout=PIPE).stdout.read()
subprocess.call(*popenargs, **kwargs)
它的基本用法和上面的Popen类参数一致,但是它会等待命令结束后才会返回程序
return_code = subprocess.call("echo Hello World", shell=True)
- os模块里也有C语言里fork/exec/spawn方法