【发布时间】:2015-08-11 12:32:40
【问题描述】:
我想在终端中输出与右侧完全对齐的彩色文本(如 pacman 的截图 (packet manager of the arch linux distribution)(not coloured))
目前我正在使用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 中的任何内容?或者是否有一个处理终端颜色和对齐的简单库可以帮助我?或者这个问题有简单的解决方案吗?
【问题讨论】:
-
AttributeError: 'shutil' 对象没有属性 'get_terminal_size'
-
@xApple 你可能在 python2 上,因为 3.3 版本的shutil 有
get_terminal_size。 -
这个问题只被标记为“python”而不是“python3”。未指定 IMO 时,2 系列仍然是默认值。
标签: python terminal python-click