美文网首页
subprocess

subprocess

作者: 孟轲666 | 来源:发表于2018-06-09 14:25 被阅读30次
    • subprocess.call()

    执行命令,并返回执行状态。其中shell参数为False时,命令需要通过列表的方式传入,当shell为True时,可直接传入命令。示例如下:

    >>> a = subprocess.call(['df','-hT'],shell=False)
    >>> a  = subprocess.call('df -hT',shell=True)
    >>> print a
    0 
    
    • subprocess.check_call()

    用法与subprocess.call()类似,区别是,当返回值不为0时,直接抛出异常,示例如下:

    >>> a = subprocess.check_call('df -hT',shell=True)
    >>> print a
    0
    >>> a = subprocess.check_call('dfdsf',shell=True)
    /bin/sh: dfdsf: command not found
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib64/python2.6/subprocess.py", line 502, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command 'dfdsf' returned non-zero exit status 127
    
    • 类Popen的成员函数

    communicate(input=None):

    与子进程交流,把该方法括号中的数据发送到子进程的标准输入stdin,
    数据格式应该是字符串,若为None,则不给子进程发送数据。返回的元组从stdout,stderr中读取数据直到文件结尾。
    communicate() returns a tuple (stdout, stderr).
    返回包含两个元素的元组,第一是stdout输出的字符串,第二个是stderr的字符串,

    out,err = std.communicate()

    • Popen模块也定义了2个便捷函数

    • call(*args, **kwargs):

    运行带参数的命令,等待命令执行完成,返回返回码的属性。

    这里的参数与作为类Popen的构造参数一样,

    只有命令时候用 call("cmd"),命令带参数时候要用list形式['cmd', 'args']

    例如:

    retcode = call('ls')

    retcode = call(["ls", "-l"])

    retcode = call( ("ls", "-l") )

    相关文章

      网友评论

          本文标题:subprocess

          本文链接:https://www.haomeiwen.com/subject/vjuteftx.html