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 表示执行失败