首页 > 其他分享 >Rich:终端打印富文本

Rich:终端打印富文本

时间:2024-05-08 15:23:50浏览次数:17  
标签:Markdown console Rich 打印 rich import 文本

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

Rich:终端打印富文本-0

在这个多彩缤纷的数字时代,命令行界面似乎太过单调乏味。
想象一下,如果你的终端输出能够像现代网页一样丰富多彩,是不是会带给你更愉快的开发体验?
这时,一个强大的库——Rich——悄然走进了你的视野。
它让颜色和样式的添加变得异常简单,不仅如此,它还可以渲染表格、进度条,甚至是 Markdown 和语法高亮的代码!
如果这能吸引你,那么就让我们一起来看看如何使用 Rich 来美化你的命令行吧。

什么是 Rich?

丰富的彩色文本、灵活的表格显示、动态的进度指示……所有这些听起来是不是很复杂?
但有了 Rich,这些都只需几行代码就能实现。
Rich 是一个 Python 库,让你的终端输出不再仅仅是黑白世界。
在 GitHub 上,你可以找到这个令人惊喜的库,它支持 Python 3.6 及以上版本,并且与众多类似库如 colorama、termcolor 相比,提供了自动换行、语法高亮、主题定制等独特功能。
项目地址: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())

这将在你的终端输出带有不同样式和颜色的文本。
Rich:终端打印富文本-1

控制台输出

对于需要更多控制富文本内容的情况,可以导入并构建一个 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:终端打印富文本-2

进度条

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

from rich.progress import track
import time

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

效果如下:
Rich:终端打印富文本-3

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,让你的终端输出变得更加丰富和多彩了!
参考资料

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

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

标签:Markdown,console,Rich,打印,rich,import,文本
From: https://www.cnblogs.com/luckzack/p/18179910

相关文章

  • python logger 打印日志错误行数
    pythonlogger打印日志错误行数importloggingapp=Flask(__name__)#配置日志handler=logging.FileHandler('app.log')#日志输出到文件handler.setLevel(logging.INFO)#设置日志级别formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)......
  • dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv
    一、构造  da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')  print(da)  datas=pd.DataFrame(da)2、直接赋值df=pd.DataFrame([[1.4,np.nan],[7,-4],[np.nan,np.nan],[0.75,-1.3]],index=[1,2,3,4],         columns=[......
  • Linux脚本——打印口算题
    #!/bin/bashfunctionprint_random(){#forkin{1..10};#do#echo-e"$k\t$RANDOM"#donemin=$1max=$(($2-$min+1))num=$(date+%s%N)echo$(($num%$max+$min))#if[$?];then#return0......
  • Richard 林旅强:说说社区的故事和对 RTE 社区的畅想
    各位RTE开发者社区的小伙伴们,大家好: 我是Richard林旅强,今年起开始担任我们RTE社区联合主理人,很荣幸能在这里跟杜金房老师和陈靖老师一起做点事情,为社区的大家服务:) 今天想跟各位分享,我参与社区的几个故事,也希望对各位RTE的小伙伴能有启发和收获。第一个故事:从玩......
  • 【GD32】---- 使用GD32调试串口并实现printf打印输出
    1复制工程模板直接复制工程模板里的系统文件和固件库文件到新的工程文件01_USART_Printf2新建keil工程参考上一篇博文:【GD32】----移植工程模板及点灯测试3编写代码3.1创建USART文件创建一个USART.c文件,放于05_UserDriver文件夹中USART.h/********************......
  • golang生成二维码图片,支持图片下方增加多行居中文本
    golang生成二维码图片,支持图片下方增加多行居中文本效果工具类代码packageUtilsimport( "bytes" "fmt" "github.com/golang/freetype/truetype" "github.com/skip2/go-qrcode" "golang.org/x/image/font" "golang.org/x/image/math......
  • Ftfy:文本编码修复
    你是否曾面对过这样的情形:打开一个文本文件,只为发现里面全是奇怪的字符,比如"文档"代替了"文档",或许这是某种神秘的外星文字?然而,现实往往是这个文件的编码发生了错误,而你并不知道如何去修复它们。就像生活中遇到各种意外情况一样,幸好有一个名叫FTFY的Python类库,像......
  • text_blind_watermark%3A 给文本加隐水印
    项目简介文本隐水印,用来把一段信息嵌入到一段明文中,使信息隐密不可见,并且旁人无法察觉到嵌入后明文的变化。经测试,在这些场景下信息隐藏比较完美MacBook版本的Chrome浏览器,包括知乎网页版、微博网页版等。微信、钉钉。Mac/Iphone版均可苹果备忘录用Chrome打开github......
  • LangSegment:多语言(97种语言)的混合文本自动分词工具
    项目简介它是一个强大的多语言(97种语言)的混合文本自动分词工具。[中日英韩:已测试]主要用途:它非常适合各种TTS语音合成项目,多语种混合文本的前端推理,和预处理后端训练。它基于py3langid的扩展实现(>=python3.6)。LangSegmentItisamulti-lingual(97languages)textcon......
  • 文本自动生成PPT的AI工具——轻竹AIPPT
    PPT(PowerPointPresentation)是商务、教育和各种演讲中不可或缺的工具。但是,设计一份既吸引人又能有效传达信息的PPT确实不容易。在这个过程中,选择一个好的工具能够事半功倍。而现在,AI技术的介入,让这个过程变得更加简单和有趣,今天就分享一款免费的AI一键生成PPT的工具。轻竹AIPPT......