python 之 shell命令执行

发布时间:2019-07-14 10:23:24编辑:auto阅读(1699)

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


关键字