如何使用subprocess.check_output打印原始颜色输出

4

我有一堆运行GTEST的可执行文件。

GTEST会将测试通过和失败的结果输出成彩色。

现在,当我使用Python subprocess.check_output脚本运行这些可执行文件时,它没有彩色输出。

这是代码:

for root, dirs, files in os.walk(path):
    for file in files:
       try:
           print subprocess.check_output([os.path.join(root, file)], shell= True, )
       except subprocess.CalledProcessError, e:
            error +=1
print error

请问有人能帮我,我该如何打印输出彩色的原始输出?

1个回答

1

今天我在Windows上遇到了类似的问题。我进行了一些研究,发现问题在于gtest使用屏幕缓冲句柄在控制台中创建颜色。gtest的普通输出流不包含任何颜色信息。这意味着一旦这些被重定向,颜色就会丢失。

以下代码对我有效:

subprocess.check_call(["cmd", "/c", gtest_case_executable, "--gtest_color=yes"]) 

只要Python命令行调用没有使用任何重定向调用,例如tee>>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接