`

Python中执行外部命令并捕获双向输出

 
阅读更多
原文:http://my.oschina.net/qihh/blog/74266
利用python的subprocess模块执行外部命令,并捕获stdout,stderr的输出:
import subprocess
#print ’popen3:’

def external_cmd(cmd, msg_in=''):
    try:
        proc = subprocess.Popen(cmd,
                   shell=True,
                   stdin=subprocess.PIPE,
                   stdout=subprocess.PIPE,
                   stderr=subprocess.PIPE,
                  )
        stdout_value, stderr_value = proc.communicate(msg_in)
        return stdout_value, stderr_value
    except ValueError as err:
        #log("ValueError: %s" % err)
        return None, None
    except IOError as err:
        #log("IOError: %s" % err)
        return None, None

if __name__ == '__main__':
    stdout_val, stderr_val = external_cmd('ls -l')
    print 'Standard Output: %s' % stdout_val
    print 'Standard Error: %s' % stderr_val
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics