查看原文
其他

Rich —— 一个让程序更高级的 Python 库

晓飞的李 管窥程序 2024-03-29

继续我们的有趣的 Python 库之旅 ——

一个小小的库,或许能避免重复造轮子

一个不显眼的功能,也许能在关键时刻拯救我们

一个出乎意料的方法,或许能激发更多创意灵感

一个独特的技能,也许能成为我们的守护神……



在这个多彩缤纷的数字时代,命令行界面似乎太过单调乏味。

想象一下,如果你的终端输出能够像现代网页一样丰富多彩,是不是会带给你更愉快的开发体验?

这时,一个强大的库——Rich——悄然走进了你的视野。

它让颜色和样式的添加变得异常简单,不仅如此,它还可以渲染表格、进度条,甚至是  Markdown  和语法高亮的代码!

如果这能吸引你,那么就让我们一起来看看如何使用  Rich  来美化你的命令行吧。

什么是  Rich?

丰富的彩色文本、灵活的表格显示、动态的进度指示……所有这些听起来是不是很复杂?

但有了  Rich,这些都只需几行代码就能实现。

Rich  是一个  Python  库,让你的终端输出不再仅仅是黑白世界。

在 GitHub 上,你可以找到这个令人惊喜的库,它支持  Python 3.6 及以上版本,并且与众多类似库如 coloramatermcolor 相比,提供了自动换行、语法高亮、主题定制等独特功能。

项目地址:https://github.com/willmcgugan/rich

安装

虽然  Rich  不是  Python  的标准库,但它可以通过  pip  轻松安装:

pip install rich

安装完成后,运行以下命令可以测试  Rich  在你的终端的输出效果:

python -m rich

主要功能

在介绍了  Rich  和安装方法之后,让我们来具体看看它都能做些什么。

基本打印

Rich  让在应用程序中添加丰富的输出变得非常容易。

你可以使用与内置  Python  函数具有相同签名的 rich.print 方法。例如:

from rich import print

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

这将在你的终端输出带有不同样式和颜色的文本。

控制台输出

对于需要更多控制富文本内容的情况,可以导入并构建一个 Console 对象:

from rich.console import Console

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

你可以通过这种方式来设置文本的样式,甚至在输出中使用类似于 bbcode[1] 的特殊标记来精细控制样式。

表格渲染

Rich  还可以使用  unicode  字符渲染出各种风格的表格:

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

console = Console()
table = Table(show_header=True, header_style="bold magenta")
table.add_column("Date", style="dim", width=12)
table.add_column("Title")
# ... 此处省略其他列和行的添加 
console.print(table)

效果如下:

进度条

当你有长时间运行的任务时,Rich  能渲染出平滑动态的进度条,让你清晰地看到每项任务的完成情况。

from rich.progress import track
import time

for step in track(range(100)):
    # todo do_step(step)
    time.sleep(1)

效果如下:

Markdown  渲染和语法高亮

Rich  还能渲染  Markdown,将格式化文本转换为终端格式。此外,使用 pygments 库支持多种编程语言的语法高亮。

from rich.markdown import Markdown

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

高级用法

除了上面提到的基础功能,Rich  也提供了一些高级功能,例如自定义日志处理器、插入  Emoji  表情符号、显示目录树型结构等。

更多高级功能和用法,可以查阅 Rich  文档[2]

实践

现在,为了更好地掌握  Rich  这个强大的库,你可以尝试以下一些练习:

  1. 创建一个富文本日志记录器,并使用它来记录你的应用程序活动。
  2. 试着构建一个表格,并在其中填入一些虚拟数据。
  3. 将一篇简短的  Markdown  文本用  Rich  进行渲染,比较与原文的差异。

总结

通过本文,你已经初步了解了  Rich  这个强大的  Python  库。

不论是提升用户体验还是调试程序,Rich  都能给你带来前所未有的便利。

现在,是时候在你的工程中尝试使用  Rich,让你的终端输出变得更加丰富和多彩了!

参考资料
[1]

bbcode: https://en.wikipedia.org/wiki/BBCode

[2]

Rich 文档: https://rich.readthedocs.io/en/latest/

作者水平有限,文中难免存在一些疏漏或错误,欢迎反馈、指正,感谢支持!

回复 源码 获取文中代码。


往期精品:

Pendulum —— 一个专业的 Python 库

Cocos2d —— 一个能实现梦想的 Python 库
Pygame —— 一个好玩的游戏 Python 库
Watchdog —— 一条忠诚的 Python 狗(库)
Faker —— 一个超实用的 Python 库
Newspaper3k —— 一个神奇的 Python 库
Path —— 原来还可以这么玩!
Pangu —— 一个美化中文排版的工具
CherryPy —— 一个极简的 Python 库
docopt —— 一个优雅 且必会的 Python 库

戳这里关注我,看更多精彩内容👇

官方合作车友会:最温情的特斯拉车友会
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存