/【雷火UX数据挖掘】Rich——漂亮的Python输出

【雷火UX数据挖掘】Rich——漂亮的Python输出

Rich开源地址:https://github.com/willmcgugan/rich


01
 引  言 

“Beautiful is better than ugly.”  

——Tim Peters在《The Zen of Python》中写道。

然而,Python在终端的输出却相当丑陋,甚至连颜色都只有一种。
通常,你需要编写非常多的额外代码才能使输出变得丰富多彩。
Rich 是一个 Python 库 ,用于在终端中实现富文本和漂亮的格式设置,只需要极少量的代码。
02
 如何安装 
可以使用pip安装:
pip install rich
如果是anaconda环境,也可以使用conda安装:
conda install rich
03
 使用案例 
用于日志打印
输入代码:
from rich.console import Consoleconsole = Console()test_data = [    {"method": "sum", "params": [None, 1, 2, False], "id": "1",},    {"method": "notify_hello", "params": [7]},    {"method": "subtract", "params": [42, 23], "id": "2"},]console.log(test_data, )

输出:


可以看见,嵌套的数据结构中不同的数据类型可以用不同颜色显示出来了。
打印Emoji 

非常的简单,终端可以正确的显示表情符号。

打印表格
通过Table对象可以快速实现表格的打印,甚至可以是动态变化的表格。

输入代码:

from rich.console import Consolefrom rich.table import Table
table = Table(title="Star Wars Movies")
table.add_column("Released", justify="right", style="cyan", no_wrap=True)table.add_column("Title", style="magenta")table.add_column("Box Office", justify="right", style="green")
table.add_row("Dec 20, 2019", "Star Wars: The Rise...", "$952,110,690")table.add_row("May 25, 2018", "Solo: A Star Wars Story", "$393,151,347")table.add_row("Dec 15, 2017", "Star Wars Ep. V111: The Last Jedi", "$1,332,539,889")table.add_row("Dec 16, 2016", "Rogue One: A Star Wars Story", "$1,332,439,889")
console = Console()console.print(table)
输出:

打印树形目录 
打印树形目录,需要通过Tree对象

输入代码:

from rich.tree import Treefrom rich import print
tree = Tree("Rich Tree")tree.add("foo")tree.add("bar")baz_tree = tree.add("baz")baz_tree.add("[red]Red").add("[green]Green").add("[blue]Blue")print(tree)

输出:


打印卡片
输入代码:
import jsonfrom urllib.request import urlopen
from rich.console import Consolefrom rich.columns import Columnsfrom rich.panel import Panel

def get_content(user): """Extract text from user dict.""" country = user["location"]["country"] name = f"{user['name']['first']} {user['name']['last']}" return f"[b]{name}[/b]\n[yellow]{country}"

console = Console()users = json.loads(urlopen("https://randomuser.me/api/?results=30").read())["results"]user_renderables = [Panel(get_content(user), expand=True) for user in users]console.print(Columns(user_renderables))

输出:


用于Traceback 
输入代码:
from rich.console import Consoleconsole = Console()
try: do_something()except Exception: console.print_exception(show_locals=True)

输出:


用Rich来做bug定位真是太方便了。
04
 结  语 
除了上面的例子外,Rich还有非常多的打印功能,如Markdown打印、高亮打印、进度条打印等等。快来安装这个包试试吧!

最后欢迎大家投递雷火UX设计面向2022届毕业生的校招岗位

雷火UX商务沟通:grp.leihuoux@corp.netease.com
往期推荐


本文来自微信公众号“网易雷火UX用户体验中心”(ID:LeihuoUX)。大作社经授权转载,该文观点仅代表作者本人,大作社平台仅提供信息存储空间服务。