【发布时间】:2016-10-31 06:56:04
【问题描述】:
我有以下代码:
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。其他程序也这样做 -
啊,当然,有道理 - 我在这个例子中尝试的命令是基于
ansible的命令。跑出剧本,美丽的彩虹。在脚本中,不那么漂亮。 -
彩色输出可能很棘手...某些程序(例如
git)默认禁用颜色,因为它们是Popen('foo')的一部分。如果我在彩色输出方面遇到问题,几乎总是,问题在于我从Popen()调用的东西。尝试使用 CLI 选项强制颜色(如果foo有它们)。
标签: python python-2.7 popen