织物纸条的彩色输出

2024-05-27 11:17:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从fabric script为输出着色,所以我做了如下操作:

local("hg pull")
print(blue(local("hg update")))
local("hg status")

我希望“hgupdate”响应打印为蓝色,但是我得到了下一行“hgstatus”的蓝色结果。在

在Fabric文档中,有一些对硬编码字符串进行着色的示例,正如我所期望的那样。你有什么建议可以让我只对一个本地命令进行颜色响应?在


Tags: 文档localstatusscriptupdatebluehgpull
2条回答

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("hg pull")
res = local("hg update", capture=True)
print(blue(res))
local("hg status")

[编辑]您还需要capture=True来获取输出。在

相关问题 更多 >

    热门问题