你可以让 subprocesss.Popen 在 stdout/stderr 中保留颜色吗?

MrD*_*Duk 6 python popen python-2.7

我有以下代码:

p = subprocess.Popen(cmd.split(' '), env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    while(True):
      log.info(p.stdout.readline())
      if(p.poll() is not None):
        break
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,除了它删除了所有发出的颜色。有没有办法保留这个?

Rol*_*ith 5

您没有指定 whan cmdis,但是当某些程序确定其标准输出实际上未连接到终端时,它们不会发出终端上颜色输出所需的转义序列

根据程序,您可能会或可能无法覆盖它。

使用ansible,您可以将force_color配置变量设置为 1 以强制颜色输出。