我想在终端中输出与右侧完全对齐的彩色文本(如 pacman 的截图(arch linux 发行版的数据包管理器)(未着色))
目前我正在使用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 中的任何内容或单击?或者是否有一个处理终端颜色和对齐的简单库可以帮助我?或者这个问题有简单的解决方案吗?