一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第1张图片
不知道你统计过没有,你一天运行过多少次终端命令行,我自己是挺多次的,不过原版的终端显示多是黑白,看多了难免枯燥,而且会错过很多重要的信息,不能及时提醒。

一次偶然的机会我见到了绿色的 progress 进度条:
在这里插入图片描述
从此以后,便对这种带颜色的终端显示开始研究,经过一段时间知道了tqdm和colorama 这两个开源项目。让我的黑白终端开始有了色彩,就像从黑白照片过度到彩色照片,感觉终端都有了生命!感觉写代码的体验一下次上升了一个级别。

直到最近,我在逛 github 的时候,看到了这样一幅图片:
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第2张图片
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第3张图片
这是什么神奇的操作!多么优雅的色彩!

这里要介绍的就是最近 Github 榜单很火热的开源项目——Rich

Rich 是一个用于实现终端多色彩多内容显示的开源 Python 库。

**支持1600万种颜色显示!**多种格式字体显示(粗体斜体划线 等)

支持多种格式的表格、进度条、markdown,语法高亮,错误回溯等显示方式!囊括所有你想要的输出方式。
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第4张图片
01.安装

pip install rich

02.使用

直接用 print 输出

只需要引入 rich 包之后,在 print 内容加入想要的配置即可。

from rich import print
print("Hello, [bold magenta]World[/bold magenta]!",":vampire:", locals())

运行看一下效果
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第5张图片
03.采用 console 输出

Console 是另一种更方便配置化的输出形式,输入的时候直接配置 style即可。

from rich.console import Console

console = Console()
console.print("Hello", "World", style="bold red")

运行看一下效果
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第6张图片
当然,也可以用字符串直接配置的方式进行:

console.print("Where there is a[bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].")

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第7张图片

04.Console Logging

使用 Console方式打印出来的 log 信息更加清晰,默认支持语法高亮。

可以选择直接输出为表格的形式,更方便查看。

而且打印出来的表格是会根据目前的窗口自适应的。

from rich.console import Console
console = Console()

test_data = [
    {
     "jsonrpc": "2.0", "method": "sum", "params": [None,1,2,4,False,True], "id": "1"},
    {
     "jsonrpc": "2.0", "method": "noti_hello", "params": [7]},
    {
     "jsonrpc": "2.0", "method": "subtract", "params": [42,23},"id": "2"
]

def test_log():
    enabled = False
    context = {
     
        "foo": "bar",
    }
    movies = ["Deadpool", "Rise of the Skywalker"]
    console.log("Hello from", console, "!")
    console.log(test_data, log_locals=True)

test_log()

原来log也可以这么漂亮:
一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第8张图片
05.进度条

这是我最心仪的进度条方式,直接多进度条同时输出。

from rich.progress import track

for step in track(range(100)):
    do_step(step)

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第9张图片

真的很酷啊,立马感觉逼格很高!
06.Markdown

rich也支持直接打印markdown格式,这样在打印说明文档或者提供包信息的时候更明了。

from rich.console import Console
from rich.markdown import Markdown

console = Console()
with open("README.md") as readme:
    markdown = Markdown(readme.read())
console.print(markdown)

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第10张图片

07.语法高亮

rich采用pygments库来支持语法高亮,同markdown的渲染方式相同。

from rich.console import Console
from rich.syntax import Syntax

my_code = '''
def iter_first_last(values: Iterable[T] -> Iterable[Tuple[bool, bool, T]]):
    """Iterate and generate a tuple with a flag for first and lastvalue."""
    iter_values = iter(values)
    try:
        previous_value = next(iter_values)
    except StopIteration:
        return
    first = True
    for value in iter_values:
        yield first, False, previous_value
        first = False
        previous_value = value
'''
syntax = Syntax(my_code, "python", theme="monokai", line_numbers=True)
console = Console()
console.print(syntax)

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第11张图片

08.Table

rich可以渲染自适应的表格,而且支持表格的格式配置(边框、风格、单元格对齐等)

from rich.console import Console
from rich.table import Column, Table

console = Console()

table = Table(show_header=True, header_style="bold magenta")
table.add_column("Date", stele="dim", width=12)
table.add_column("Title")
table.add_column("Production Budget", justify="right")
table.add_column("Box Office", justify="right")
table.add_row(
    "Dev 20, 2019", "Star Wars: The Rise of Skywalker", "$275,000,000", "$375,126,110"
)
table.add_row(
    "May 25, 2018",
    "[red]Solo[/red]: A Star Wars Store",
    "$262,000,000",
    "[bold]$1,332,539,889[/bold]"
)

console.print(table)

一个炫酷的Python库,让你的终端输出方式,让你逼格秒变高!_第12张图片

有了这个神器之后,我的终端再也不是黑白的世界了,虽然有linux的一些主题的调整,但是远没有这个神器这么功能强大,还等啥呢,赶紧下载安装爽起来!

你可能感兴趣的:(python)