2024-05-27 11:17:06 发布
网友
我正在尝试从fabric script为输出着色,所以我做了如下操作:
local("hg pull") print(blue(local("hg update"))) local("hg status")
我希望“hgupdate”响应打印为蓝色,但是我得到了下一行“hgstatus”的蓝色结果。在
在Fabric文档中,有一些对硬编码字符串进行着色的示例,正如我所期望的那样。你有什么建议可以让我只对一个本地命令进行颜色响应?在
fabric中的Color函数用于简单字符串,而不是用于命令输出。但您可以为着色实现自己的上下文管理器:
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)之前,您不会看到任何输出。在
local(..., capture=True)
我用的是:
local("hg pull") res = local("hg update", capture=True) print(blue(res)) local("hg status")
[编辑]您还需要capture=True来获取输出。在
capture=True
fabric中的Color函数用于简单字符串,而不是用于命令输出。但您可以为着色实现自己的上下文管理器:
实现目标的另一种方法是使用
local(..., capture=True)
,但在命令完成(help on local command)之前,您不会看到任何输出。在我用的是:
[编辑]您还需要
capture=True
来获取输出。在相关问题 更多 >
编程相关推荐