rich

rich

Python终端文本美化和格式化工具

Rich是一个开源Python库,用于增强终端输出的文本效果和格式。它提供简洁的API,支持添加颜色、样式、表格、进度条等丰富元素。Rich还能渲染Markdown、语法高亮和跟踪信息,适用于Linux、macOS和Windows平台,兼容Python 3.7+版本。开发者可将其轻松集成到项目中,改善调试体验和终端交互。

RichPython终端文本格式化控制台输出Github开源项目

支持的Python版本 PyPI版本

下载量 codecov Rich博客 Twitter关注

Logo

英文readme简体中文 readme正體中文 readme西班牙语 readme德语 readme瑞典语 readme日语 readme韩语 readme法语 readme瑞士德语 readme印地语 readme巴西葡萄牙语 readme意大利语 readme俄语 readme印尼语 readme波斯语 readme土耳其语 readme波兰语 readme

Rich是一个Python库,用于在终端中呈现丰富的文本和美观的格式。

Rich API使得在终端输出中添加颜色和样式变得简单。Rich还可以渲染漂亮的表格、进度条、Markdown、语法高亮的源代码、回溯等——开箱即用。

特性

如需Rich的视频介绍,请查看@fishnets88制作的calmcode.io

看看人们对Rich的评价

兼容性

Rich适用于Linux、macOS和Windows。真彩色/emoji在新版Windows Terminal上可用,经典终端限制为16种颜色。Rich需要Python 3.7或更高版本。

Rich无需额外配置即可与Jupyter notebooks配合使用。

安装

使用pip或你喜欢的PyPI包管理器安装。

python -m pip install rich

运行以下命令在你的终端上测试Rich输出:

python -m rich

Rich打印

要轻松地为你的应用添加富文本输出,你可以导入rich print方法,它与Python内置的print函数具有相同的签名。试试这个:

from rich import print print("你好,[bold magenta]世界[/bold magenta]!", ":vampire:", locals())

Hello World

Rich REPL

Rich可以安装在Python REPL中,这样任何数据结构都将被美化打印和高亮显示。

>>> from rich import pretty >>> pretty.install()

REPL

使用Console

要更好地控制富终端内容,导入并构造一个Console对象。

from rich.console import Console console = Console()

Console对象有一个print方法,其接口与内置的print函数有意相似。以下是使用示例:

console.print("你好", "世界!")

正如你所料,这会在终端中打印出"Hello World!"。请注意,与内置的print函数不同,Rich会根据终端宽度自动换行显示你的文本。

有几种方法可以为输出添加颜色和样式。你可以通过添加style关键字参数来为整个输出设置样式。这里有一个例子:

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

输出结果会类似于下面这样:

Hello World

这种方式适用于一次性为一行文本设置样式。对于更细粒度的样式设置,Rich提供了一种特殊的标记语法,类似于bbcode。这里有一个例子:

console.print("有[bold cyan]志者[/bold cyan],事[u]竟[/u][i]成[/i]。")

Console Markup

你可以使用Console对象轻松生成复杂的输出。详细信息请参阅Console API文档。

Rich检查

Rich有一个inspect函数,可以生成任何Python对象(如类、实例或内置对象)的报告。

>>> my_list = ["foo", "bar"] >>> from rich import inspect >>> inspect(my_list, methods=True)

Log

详细信息请参阅inspect文档

Rich库

Rich包含多个内置的_可渲染对象_,你可以用它们在CLI中创建优雅的输出,并帮助你调试代码。

点击以下标题查看详情:

<details> <summary>日志</summary>

Console对象有一个log()方法,其接口类似于print(),但还会显示当前时间以及调用该方法的文件和行号。默认情况下,Rich会对Python结构和repr字符串进行语法高亮。如果你记录一个集合(如字典或列表),Rich会对其进行美化打印,使其适应可用空间。以下是一些这些功能的示例。

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": "notify_hello", "params": [7]}, {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": "2"}, ] def test_log(): enabled = False context = { "foo": "bar", } movies = ["死侍", "天行者崛起"] console.log("来自", console, "的问候!") console.log(test_data, log_locals=True) test_log()

上面的代码产生以下输出:

Log

注意log_locals参数,它会输出一个包含调用log方法处局部变量的表格。

log方法可用于长时间运行的应用程序(如服务器)的终端日志记录,同时也是一个非常好的调试辅助工具。

</details> <details> <summary>日志处理器</summary>

你还可以使用内置的Handler类来格式化和着色Python日志模块的输出。以下是输出示例:

Logging

</details> <details> <summary>表情符号</summary>

要在控制台输出中插入表情符号,只需将表情符号名称放在两个冒号之间。这里有一个例子:

>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:") 😃 🧛 💩 👍 🦝

请谨慎使用此功能。

</details> <details> <summary>表格</summary>

Rich可以使用unicode字符渲染灵活的表格。它提供了大量的格式化选项,包括边框、样式、单元格对齐等。

table movie

上面的动画是使用examples目录中的table_movie.py生成的。

这里有一个更简单的表格示例:

from rich.console import Console from rich.table import Table console = Console() table = Table(show_header=True, header_style="bold magenta") table.add_column("日期", style="dim", width=12) table.add_column("标题") table.add_column("制作预算", justify="right") table.add_column("票房", justify="right") table.add_row( "2019年12月20日", "星球大战:天行者崛起", "2.75亿美元", "3.75126118亿美元" ) table.add_row( "2018年5月25日", "[red]索罗[/red]:星球大战外传", "2.75亿美元", "3.93151347亿美元", ) table.add_row( "2017年12月15日", "星球大战8:最后的绝地武士", "2.62亿美元", "[bold]13.32539889亿美元[/bold]", ) console.print(table)

这会产生以下输出:

表格

请注意,控制台标记的渲染方式与print()log()相同。事实上,任何Rich可渲染的内容都可以包含在表头/行中(甚至包括其他表格)。

Table类足够智能,能够调整列的大小以适应终端的可用宽度,并根据需要换行文本。以下是同一示例,但终端比上面的表格更小:

表格2

</details> <details> <summary>进度条</summary>

Rich可以渲染多个无闪烁的进度条来跟踪长时间运行的任务。

对于基本用法,将任何序列包装在track函数中并迭代结果。这里有一个例子:

from rich.progress import track for step in track(range(100)): do_step(step)

添加多个进度条也不难。这里有一个从文档中摘取的例子:

进度

可以配置列以显示您想要的任何详细信息。内置列包括完成百分比、文件大小、文件速度和剩余时间。这里是另一个显示正在进行的下载的例子:

进度

要自己尝试这个,请查看examples/downloader.py,它可以同时下载多个URL并显示进度。

</details> <details> <summary>状态</summary>

对于难以计算进度的情况,您可以使用status方法,它会显示一个"旋转器"动画和消息。这个动画不会阻止您正常使用控制台。这里有一个例子:

from time import sleep from rich.console import Console console = Console() tasks = [f"任务 {n}" for n in range(1, 11)] with console.status("[bold green]正在处理任务...") as status: while tasks: task = tasks.pop(0) sleep(1) console.log(f"{task} 完成")

这在终端中生成以下输出。

状态

旋转器动画借鉴自cli-spinners。您可以通过指定spinner参数来选择旋转器。运行以下命令查看可用的值:

python -m rich.spinner

上述命令在终端中生成以下输出:

旋转器

</details> <details> <summary>树形结构</summary>

Rich可以渲染带有指引线的树形结构。树形结构非常适合显示文件结构或任何其他层次数据。

树的标签可以是简单的文本或Rich可以渲染的任何其他内容。运行以下命令进行演示:

python -m rich.tree

这生成以下输出:

markdown

查看tree.py示例,了解一个可以显示任何目录的树形视图的脚本,类似于Linux的tree命令。

</details> <details> <summary>列</summary>

Rich可以以整齐的形式渲染内容,列宽可以相等或最优化。这里有一个非常基本的(MacOS / Linux)ls命令克隆,它以列的形式显示目录列表:

import os import sys from rich import print from rich.columns import Columns directory = os.listdir(sys.argv[1]) print(Columns(directory))

以下截图是columns示例的输出,它以列的形式显示从API获取的数据:

列

</details> <details> <summary>Markdown</summary> Rich 可以渲染 [markdown](https://rich.readthedocs.io/en/latest/markdown.html),并能合理地将格式转换为终端显示。

要渲染 markdown,请导入 Markdown 类并使用包含 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)

这将产生类似以下的输出:

markdown

</details> <details> <summary>语法高亮</summary>

Rich 使用 pygments 库来实现语法高亮。使用方法类似于渲染 markdown;构造一个 Syntax 对象并将其打印到控制台。以下是一个示例:

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 last value.""" 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 yield first, True, previous_value ''' syntax = Syntax(my_code, "python", theme="monokai", line_numbers=True) console = Console() console.print(syntax)

这将产生以下输出:

syntax

</details> <details> <summary>回溯</summary>

Rich 可以渲染美观的回溯,比标准 Python 回溯更易读且显示更多代码。你可以将 Rich 设置为默认的回溯处理程序,这样所有未捕获的异常都将由 Rich 渲染。

以下是在 OSX 上的显示效果(Linux 上类似):

traceback

</details>

所有 Rich 可渲染对象都使用控制台协议,你也可以使用它来实现自己的 Rich 内容。

Rich CLI

另请参阅 Rich CLI,这是一个由 Rich 驱动的命令行应用程序。直接从命令提示符语法高亮代码、渲染 markdown、以表格形式显示 CSV 等。

Rich CLI

Textual

另请参阅 Rich 的姊妹项目 Textual,你可以用它在终端中构建复杂的用户界面。

Textual 截图

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多