在Python程序中调用shell命令有4种方法的比较:
1、os.system(command)
在一个子终端调用该命令,同步调用,返回的是执行完毕后的退出状态,无法保存返回的command命令的执行结果
2、os.popen(command,mode)
output = os.popen(command,mode)
获取结果:output.read(),但是无法获取程序执行的返回值
说明:该方法是返回一个文件对象,以读或者写(由mode决定,mode默认是’r')
3、commands.getstatusoutput(command)
(status, output) = commands.getstatusoutput('ls -l')
该方法可以获取程序执行的返回值和command执行的结果
4、subprocess模块
subprocess.call(["cmd", "arg1", "arg2"],shell=True)
其中的call()完全替代了system(),而popen()被更为丰富的Popen类替代
subprocess.Popen('ls', shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)