我正在尝试为织物脚本的输出着色,所以我做了这样的事情:
local("hg pull")
print(blue(local("hg update")))
local("hg status")
我希望将“hg update”响应打印为蓝色,但是我得到了下一行“hg status”的蓝色结果。
在 Fabric 文档中,有一些使用硬编码字符串着色的示例,它们可以按我的预期工作。您对我如何对单个本地命令进行颜色响应有什么建议吗?
我正在尝试为织物脚本的输出着色,所以我做了这样的事情:
local("hg pull")
print(blue(local("hg update")))
local("hg status")
我希望将“hg update”响应打印为蓝色,但是我得到了下一行“hg status”的蓝色结果。
在 Fabric 文档中,有一些使用硬编码字符串着色的示例,它们可以按我的预期工作。您对我如何对单个本地命令进行颜色响应有什么建议吗?
这就是我使用的:
local("hg pull")
res = local("hg update", capture=True)
print(blue(res))
local("hg status")
[编辑]您还需要capture=True
获取输出。
fabric 中的颜色函数用于简单的字符串,而不是用于命令输出。但是您可以实现自己的上下文管理器进行着色:
from contextlib import contextmanager
BLUE = 34 # https://github.com/fabric/fabric/blob/1.7/fabric/colors.py#L40
@contextmanager
def colored_output(color):
print("\033[%sm" % color, end="")
yield
print("\033[0m", end="")
with colored_output(BLUE):
local("hg update")
实现目标的另一种方法是使用local(..., capture=True)
,但在命令完成之前您不会看到任何输出(本地命令帮助)。