python中有几种常用的执行shell命令的模块
1,os.system()
2, os.popen()
3,pexpect.run()
下面介绍3个模块的差别
1,os.system()
直接执行
>>> os.system('ls /tmp')
hsperfdata_root scim-panel-socket:0-root
0
可以看到这里多出了1个0., 这里的0 并不是文件,上面2个才是文件, 0 表示执行状态,0 为执行成功, 非0 表示执行失败
所以这这种执行方式,是不能获取执行命令后的输出结果的,只能做一些无返回执行的操作
2,os.popen
执行
>>> os.popen('ls /tmp')
<open file 'ls /tmp', mode 'r' at 0x2b64d90aa990>
>>> a=os.popen('ls /tmp')
>>> print a
<open file 'ls /tmp', mode 'r' at 0x2b64d90aa918>
可以看出来输入的是一个链接地址
要看到执行的结果,需要
>>> a=os.popen('ls /tmp')
>>> print a.read()
hsperfdata_root
scim-panel-socket:0-root
这个,是可以获取到执行后的输入结构的,但是无法判断是否执行成功
3,pexpect.run
执行
>>> (output,status)=pexpect.run('ls /tmp',withexitstatus=1)
>>> print output
hsperfdata_root scim-panel-socket:0-root
>>> print status
0
可以看到,这里可以获得输出接口,也可以判断命令是否执行成功
0表示执行成功,非0 表示执行失败