我想在终端中输出完全对齐的彩色文本(如pacman(packet manager of the arch linux distribution)的屏幕截图(未着色))
目前我正在使用format
:
import shutil
left = "foo"
right = "bar"
width = shutil.get_terminal_size().columns
template = "{left:30}{right:{width}}".format(left=left, right=right, width=width-30)
click.echo(template)
# click.echo works just like print with some additional features
这很好用,直到我通过ANSI转义码添加颜色:
left = click.style("foo", fg="red")
right = click.style("bar", fg="green")
# click.style just adds ANSI codes for colors and bold etc.
即。右侧不完全右对齐。这是"对",因为right
实际上是\\x1b[32mbar\\x1b[0m
,其当然具有比bar
更长的长度,因此需要更少的空间才能正确对齐。在终端获取文本之前,仅显示bar
(带颜色)。
我在python std lib或click中遗漏了什么?或者是否有一个简单的库来处理终端颜色和对齐,可以帮助我?或者这个问题有一个简单的解决方案吗?