python调用Shell脚本,有两种方法:os.system(cmd)
或os.popen(cmd)
,前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。
1.os.system()
print os.system("ls") #0
2.os.popen(cmd)
os.popen(cmd)
会把执行的cmd的输出作为值返回。这种调用方式是通过管道的方式来实现,函数返回一个file-like的对象,里面的内容是脚本输出的内容。
os.popen()
可以实现一个“管道”,从这个命令获取的值可以继续被调用。而os.system不同,它只是调用,调用完后自身退出。获取java的进程id:
os.popen("ps -C java | grep -v CMD | awk '{print $1}'").readlines()[0]
3.commands模块
1). commands.getstatusoutput(cmd)
用os.popen()
执行命令cmd, 然后返回两个元素的元组(status, result). cmd执行的方式是{ cmd ; } 2>&1, 这样返回结果里面就会包含标准输出和标准错误.
2). commands.getoutput(cmd)
只返回执行的结果, 忽略返回值.
3). commands.getstatus(file)
返回ls -ld file
执行的结果.