logo头像
Snippet 博客主题

Python中执行 Sehll 命令

本文于819天之前发表,文中内容可能已经过时。

在日常的使用中,会经常遇到需要执行 Shell 命令的情况,但是很多时候,在 Python 下执行也是很方便的。下面介绍四种方法以供参考。

  1. OS模块中的os.system()

    1
    2
    >>>os.system('ls')
    123.txt
  2. popen() 得到一个字符串,需要处理下。

    1
    2
    3
    4
    5
    >>> import os
    >>> str = os.popen("ls").read()
    >>> a = str.split("\n")
    >>> for b in a:
    print b

  3. commands模块#可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import commands
    a,b = commands.getstatusoutput('ls')
    a#是退出状态
    b#是输出的结果。
    >>> import commands
    >>> a,b = commands.getstatusoutput('ls')
    >>> print a
    0
    >>> print b
    anaconda-ks.cfg
    install.log
    install.log.syslog

    commands.getstatusoutput(cmd)返回 status,output

    commands.getoutput(cmd)只返回输出结果

  4. subprocess模块

    使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。

    使用subprocess模块的目的是替代os.system()os.popen*()commands.*等旧的函数或模块。

    1. subprocess.call(command, shell=True)直接打印结果

    2. subprocess.Popen(command, shell=True) 也可以是

      subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)这样就可以输出结果了。

      如果command不是一个可执行文件,shell=True是不可省略的。

以上就是四种方法。

评论系统未开启,无法评论!