I have the following code:
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
这个方法可以正常工作,但会移除所有的颜色。有没有办法保留颜色呢?
grep
这样的程序会检查它们使用的输出文件类型,如果它看起来不像终端,则不会输出彩色代码。如果您想强制它始终发送彩色代码,则必须使用选项--color=always
。其他程序也是这样做的。 - Bakuriuansible
的命令。在脚本外运行时,色彩斑斓,美不胜收。但在脚本中运行时,就没有那么漂亮了。 - MrDukgit
)在作为Popen('foo')
的一部分时默认禁用颜色。如果我在彩色输出方面遇到问题,几乎总是由于我从Popen()
调用的东西出了问题。尝试使用CLI选项(如果foo
有它们)强制使用颜色。 - Mike Pennington