Python Python 绚烂之境:Python Rich,让终端输出更炫酷! 蔡坨坨 2024-03-30 2024-08-10 转载请注明出处❤️
作者:测试蔡坨坨
原文链接:caituotuo.top/c8c7bd95.html
初识rich 你好,我是测试蔡坨坨。
在代码的世界里,每一行都是一个故事,每一个变量都是一个角色,而打印则是展示这些故事与角色的窗口。然而,这个窗口并非都是朴实无华的,有时候,我们需要一种更加「艺术」的方式来展示我们的故事。Python中的rich库便是一位大师级的艺术家,为我们的终端带来了绚丽的色彩和丰富的细节。
当我们涉足爬虫的世界时,往往需要在终端界面上输出各种信息,比如爬取进度、数据摘要等等。然而,传统的打印方式显得呆板乏味,无法完全展现我们所想表达的意境。这时候,rich库便是我们的得力助手。
让我们想象一下,在爬取数据的过程中,我们不仅仅是机械地输出进度信息,而是将终端界面变成了一个充满艺术气息的画布。比如,我们可以利用rich库的各种丰富功能,给不同类型的信息赋予不同的颜色、样式、甚至动画效果。这样一来,打印出来的信息不再是单调的文字,而是一幅幅生动的画面,让人仿佛置身于一个色彩斑斓的世界之中。
以爬取网易云音乐为例:
Your browser does not support the video tag.
PS:需要源码的加文末VX领取。
除此之外,rich库还可以在其他领域展现其艺术魅力。比如,在数据分析与可视化中,我们可以利用rich库将分析结果以更加美观的方式展示出来;在机器学习与深度学习中,我们可以利用rich库将模型训练的过程以动画的形式展现出来,让人一目了然地看到模型是如何不断优化的。
说了这么多,不如来一睹为快,看看如何运用吧。
rich的使用 官方文档:https://github.com/Textualize/rich
应用场景:
丰富的文本样式:rich 支持斜体、粗体、下划线等各种文本样式,让文字更具有表现力。
多彩的颜色支持:通过 rich,可以为文字、背景和边框添加各种各样的颜色,使得终端输出更加生动。
强大的布局选项:rich 提供了灵活的布局选项,可以轻松创建表格、树状结构等复杂的排版效果。
支持图像输出:除了文字信息,rich 还支持在终端中输出图片,让你的输出更具有视觉冲击力。
动画效果:rich 还支持在终端中播放动画,为用户呈现出更加生动的交互体验。
安装
安装完成后,输入python rich -m
可以查看它的特性(Win10系统推荐使用Windows terminal效果更佳):
可以看出rich支持输出各种颜色、多语言文字、表格、Markdown、代码块、进度条,甚至emoji表情……
rich print 第一个简单的例子,打印locals()变量里面的一些属性:
1 2 3 from rich import print print("Hello, [bold magenta]CaiTuotuo[/bold magenta]!" , ":vampire:" , locals ())
彩色文字 使用Console对象输出彩色文字:
1 2 3 4 5 from rich.console import Consoleconsole = Console() console.print("Hello" , "测试蔡坨坨!" , style="bold green" )
打印表格 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 from rich.console import Consolefrom rich.table import Tableconsole = Console() table = Table(show_header=True , header_style="bold magenta" ) table.add_column("Date" , style="dim" , width=12 ) table.add_column("Title" ) table.add_column("Production Budget" , justify="right" ) table.add_column("Box Office" , justify="right" ) table.add_row( "Dec 20, 2019" , "Star Wars: The Rise of Skywalker" , "$275,000,000" , "$375,126,118" ) table.add_row( "May 25, 2018" , "[red]Solo[/red]: A Star Wars Story" , "$275,000,000" , "$393,151,347" , ) table.add_row( "Dec 15, 2017" , "Star Wars Ep. VIII: The Last Jedi" , "$262,000,000" , "[bold]$1,332,539,889[/bold]" , ) console.print(table)
进度条 使用progress模块输出进度条:
1 2 3 4 5 6 7 8 9 10 import timefrom rich.progress import trackdef do_step (step ): time.sleep(0.1 ) for step in track(range (100 )): do_step(step)
以上主要介绍了rich常见的用法,更多的使用场景可参考官方给出的example:
其中,几个比较有意思的,比如Spinners.py输出各种会动的emoji:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from time import sleepfrom rich.columns import Columnsfrom rich.panel import Panelfrom rich.live import Livefrom rich.text import Textfrom rich.spinner import Spinner, SPINNERSall_spinners = Columns( [ Spinner(spinner_name, text=Text(repr (spinner_name), style="green" )) for spinner_name in sorted (SPINNERS) ], column_first=True , expand=True , ) with Live( Panel(all_spinners, title="Spinners" , border_style="blue" ), refresh_per_second=20 , ) as live: while True : sleep(1 )
彩虹文字:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 from random import randintfrom rich import print from rich.highlighter import Highlighterclass RainbowHighlighter (Highlighter ): def highlight (self, text ): for index in range (len (text)): text.stylize(f"color({randint(16 , 255 )} )" , index, index + 1 ) rainbow = RainbowHighlighter() print(rainbow("台下的少年呐,要是你看懂了天外来物,长大了,记得拯救世界!" ))
综上 总的来说,Python中的rich库为我们提供了一种全新的打印方式,让我们能够以更加艺术的方式来展示我们的代码与数据。在这个丰富多彩的终端世界里,每一行代码都是一幅画,每一个变量都是一个色彩斑斓的角色,让人仿佛置身于一个充满想象力与创造力的境界之中。
让我们一起踏上这场绚烂之旅,探索Python中的艺术打印之美!