使用 python 执行管道命令

在 shell 下,使用管道执行脚本很爽。但是想直接使用 python 的 os.system 或 subprocess 实现都比较复杂。于是想了个招,用了一个方法简单实现了一下 🙂

Python
# coding: utf-8

import os
import subprocess
import tempfile

def runShell(cmd):
    '''
    将命令输入到临时文件,并执行,返回执行结果
    '''
    tmpFd, tmpFileName = tempfile.mkstemp()
    os.write(tmpFd, cmd)
    os.close(tmpFd)
    result = execute("bash %s" % (tmpFileName))
    os.remove(tmpFileName)
    return result
    
def execute(cmdStr):
    '''
    执行命令行,返回执行结果(返回 stdout 或 stderr)
    '''
    cmd = cmdStr.split(" ")
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, err = p.communicate()
    return err or stdout

def main():
    print runShell("docker images | grep 'open' | awk '{print $3}'")
    pass

if __name__ == '__main__':
    main()

-EOF-

发表评论

电子邮件地址不会被公开。 必填项已用*标注