我正在尝试从结构脚本中为输出着色,所以我做了类似的事情:
local("hg pull")
print(blue(local("hg update")))
local("hg status")
我希望'hg update'响应以蓝色打印,但我得到下一行'hg status'的结果为蓝色。
在Fabric文档中,有一些着色硬编码字符串的示例,它们按照我的预期工作。您对我如何只对一个本地命令进行颜色响应有任何建议吗?
答案 0 :(得分:6)
这就是我使用的:
local("hg pull")
res = local("hg update", capture=True)
print(blue(res))
local("hg status")
[编辑]您还需要capture=True
来获取输出。
答案 1 :(得分:3)
结构中的颜色函数用于简单字符串,而不用于命令输出。但您可以实现自己的上下文管理器进行着色:
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)
,但在命令完成(help on local command)之前,您将看不到任何输出。