本文作者:riag
本文出处:http://blog.csdn.net/riag
声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明信息. 谢谢.
调用一个控制台程序,获取它的标准输出,或把它的标准输出重定向到界面上,这里只介绍如何获取它的标准输出,因为原理都一样的。
使用python的subprocess模块来实现。
print_output是控制是否是多行输出,returncode是输出结果
import subprocess import sys
def RunShellWithReturnCode(command,print_output=True,universal_newlines=True): p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, universal_newlines=universal_newlines) if print_output: output_array = [] while True: line = p.stdout.readline() if not line: break print line.strip("/n") output_array.append(line) output ="".join(output_array) else: output = p.stdout.read() p.wait() errout = p.stderr.read() if print_output and errout: print >> sys.stderr, errout p.stdout.close() p.stderr.close() return output, p.returncode
上面的代码来自于 开源的代码审查工具 rietveld 的代码,其中RunShellWithReturnCode函数 就是返回控制台的标准输出和返回结果