rich:格式化美观输出

楔子

偶然发现了一个特别强大又好玩的 Python 库,叫 rich,可以让你在终端中打印更加漂亮的输出。当然 rich 不仅仅可以支持带颜色打印,还可以绘制漂亮的表格、进度条、Markdown、语法高亮以及回溯等等。

并且 rich 库是适配所有操作系统的,此外还可以和 jupyter notebook 一块使用,无需任何其它配置。那么废话不多说,我们就来看看 rich 库的相关使用方法。

当然使用之前需要安装,直接 pip install rich 即可,注:使用 rich 需要 Python 版本不低于 3.6.1。

带颜色打印

带颜色打印最简单的做法就是使用 rich 提供的 print,它和内置的 print 参数是相同的。

from rich import print

# 采用中括号将颜色包起来,指定在想要改变颜色的字符串的前面即可
print("[blue]古明地觉是一个连幽灵都为之惧怕的少女")
# 也可以指定其它属性,比如粗体、斜体、下划线等等
print("[bold]粗体")
# 当然也可以同时指定,注意:斜体的话只适用于英文
print("[bold red]红色粗体")
print("[italic red]italic red")
print("[underline red]红色下划线")
# 当然这些属性是可以搭配使用的
print("[bold italic underline red]加粗、下划线、红色,但是下划线对中文无效")

# 一个字符串中可以为不同的部分指定不同的颜色、属性
print("[italic bold red]komeiji[cyan bold]satori")

# 但是问题来了,如果我希望只对字符串的某一部分做处理的话该怎么做呢?
# 比如:"komeiji satori" 的 komeiji 指定为绿色粗体,但其它的部分不变,就可以这么做
# "[bold green]komeiji[/bold green] satori",将前面的属性在指定部分的后面重新写一遍、并且在开头加上一个 /,表示限定结束位置
# 如果没有 / ,那么相当于为不同的部分指定不同的颜色属性,指定的 / 则是起一个限定范围的作用
print("[italic bold red]komeiji[/italic bold red]satori")

整体来说还是很简单的,此外它还具有 pprint 格式化打印的效果,并且终端中还会带颜色。

>>> print({i: f"satori_{i}" for i in range(1, 10)})
{
    1: 'satori_1',
    2: 'satori_2',
    3: 'satori_3',
    4: 'satori_4',
    5: 'satori_5',
    6: 'satori_6',
    7: 'satori_7',
    8: 'satori_8',
    9: 'satori_9'
}
>>>

Console

虽然 rich.print 很好用,但其实功能还是有限,如果想要更复杂的功能,那么需要使用 Console 对象,当然 print 底层也是这么做的。

from rich.console import Console

console = Console()

Console 里面的参数还是很多的,但是都比较简单,源码中写了非常详细的注释。然后来看看 Console 对象都有哪些方法。

打印

首先是 print,rich.print 实际上就是先实例化一个 Console 对象,然后在调用内部的 print 方法。

日志记录

类似于 print,但是会自动带上时间。

>>> console.log("Hello, World!")
[13:34:52] Hello, World! 

水平线

rule 方法会自动绘制一条水平线,这是将输入分割成多个部分的好方法。

>>> console.rule("标题一")
────────────────────────────────────── 标题一 ───────────────────────────────────────
>>>

不再赘述了,官网写的很详细, https://rich.readthedocs.io/en/latest/tables.html 。

posted @ 2019-07-27 02:00  古明地盆  阅读(1075)  评论(0编辑  收藏  举报