每天一个知识点:python Rich库

官方文档:Welcome to Rich’s documentation! — Rich 12.5.1 documentation

介绍:

Rich 是一个 Python 库,用于将文本(带有颜色和样式)写入终端,并用于显示高级内容,例如表格、markdown 和语法高亮代码。

Rich 适用于 OSX、Linux 和 Windows。

要求:

Rich 适用于 OSX、Linux 和 Windows。

Rich 需要 Python 3.6.3 及更高版本。请注意,由于不支持 NamedTuples 上的方法,因此不支持 Python 3.6.0。

安装:

pip install rich

如果您打算将 Rich 与 Jupyter 一起使用,则可以使用以下命令安装一些额外的依赖项:

pip install rich[jupyter]

 使用:

启动和运行 Rich 的最快方法是导入替代print函数,该函数采用与内置函数相同的参数,print并可用作替代函数。

demo演示

 

如果您不想影响 Python 的内置打印,您可以导入rich.printrprint(例如):

 
from rich import print as rprint

控制台 API

为了完全控制终端格式,Rich 提供了一个Console类。大多数应用程序都需要一个控制台实例,因此您可能希望在模块级别或作为顶级对象的属性创建一个。例如,您可以在项目中添加一个名为“console.py”的文件:

from rich.console import Console
console = Console()

然后您可以从项目中的任何位置导入控制台,如下所示:

 
from my_project.console import console

属性

控制台将自动检测渲染时所需的许多属性。

  • size是终端的当前尺寸(如果调整窗口大小可能会改变)。

  • encoding是默认编码(通常是“utf-8”)。

  • is_terminal是一个布尔值,指示控制台实例是否正在写入终端。

  • color_system是一个包含控制台颜色系统的字符串(见下文)。

颜色系统

您可以设置color_system为以下值之一:

  • None完全禁用颜色。

  • "auto"将自动检测颜色系统。

  • "standard"可以显示8种颜色,有正常和明亮的变化,总共16种颜色。

  • "256"可以显示“标准”中的 16 种颜色以及 240 种颜色的固定调色板。

  • "truecolor"可以显示 1670 万种颜色,这可能是您的显示器可以显示的所有颜色。

  • "windows"可以在旧版 Windows 终端中显示 8 种颜色。新的 Windows 终端可以显示“真彩色”。

印刷

将丰富的内容写入终端使用该print()方法。Rich 将通过其 ( __str__) 方法将任何对象转换为字符串,并执行一些简单的语法高亮显示。它还可以漂亮地打印任何容器,例如字典和列表。如果您打印一个字符串,它将呈现Console Markup

console.print([1, 2, 3])
console.print("[blue underline]Looks like a link")
console.print(locals())
console.print("FOO", style="white on blue")

 日志记录

这些log()方法提供与打印相同的功能,但添加了一些对调试正在运行的应用程序有用的功能。日志记录将当前时间写入左侧的一列,并将调用该方法的文件和行写入右侧的一列。

为了帮助调试,log() 方法有一个log_locals参数。如果将此设置为True,Rich 将显示调用该方法的局部变量表。

 打印json

print_json()方法将漂亮地打印(格式和样式)包含 JSON 的字符串。这是一个简短的示例:

console.print_json('[false, true, null, "foo"]')

 

您还可以通过记录一个对象来记录json :JSON

 低电平输出

除了print()和之外log(),Rich 还有一种out()方法,它提供了一种向终端写入较低级别的方式。out() 方法将所有位置参数转换为字符串,并且不会漂亮地打印、自动换行或将标记应用于输出,但可以应用基本样式并可选择进行突出显示。

 规则

rule()方法将绘制一条带有可选标题的水平线,这是将终端输出划分为多个部分的好方法。

console.rule("[bold red]Chapter 2")

rule 方法还接受一个style参数来设置线条的样式,以及一个align参数来对齐标题(“左”、“中心”或“右”)。

对其方式

print 和 log 都支持一个justify参数,如果设置必须是“default”、“left”、“right”、“center”或“full”之一。如果“left”,任何打印(或记录)的文本都将左对齐,如果“right”文本将在终端右侧对齐,如果“center”文本将居中,如果“full”文本将与终端的左右边缘对齐(就像书中的印刷文本)。

的默认值justify通常"default"看起来相同,"left"但有细微差别。左对齐将用空格填充文本的右侧,而默认对齐不会。如果您使用参数设置背景颜色,您只会注意到差异style

from rich.console import Console

console = Console(width=20)

style = "bold white on blue"
console.print("Rich", style=style)
console.print("Rich", style=style, justify="left")
console.print("Rich", style=style, justify="center")
console.print("Rich", style=style, justify="right")

 

溢出

overflow您可以使用以下字符串之一的参数指定 Rich 应如何处理溢出print():“fold”、“crop”、“ellipsis”或“ignore”。默认值为“折叠”,它将把多余的字符放在下一行,根据需要创建尽可能多的新行以适应文本。

“crop”方法会截断行尾的文本,丢弃任何会溢出的字符。

“ellipsis”方法类似于“crop”,但会在任何被截断的文本的末尾插入一个省略号字符(“...”)。

from typing import List
from rich.console import Console, OverflowMethod

console = Console(width=14)
supercali = "supercalifragilisticexpialidocious"

overflow_methods: List[OverflowMethod] = ["fold", "crop", "ellipsis"]
for overflow in overflow_methods:
    console.rule(overflow)
    console.print(supercali, overflow=overflow, style="bold blue")
    console.print()

 控制台风格

控制台有一个style属性,您可以使用该属性将样式应用于您打印的所有内容。默认情况下style为 None 表示不应用额外的样式,但您可以将其设置为任何有效的样式。下面是一个带有样式属性集的控制台示例:

from rich.console import Console
blue_console = Console(style="white on blue")
blue_console.print("I'm blue. Da ba dee da ba di.")

输入

控制台类有一个input()方法,其工作方式与 Python 的内置input()函数相同,但可以使用 Rich 可以打印的任何内容作为提示。例如,这是一个带有表情符号的彩色提示:

from rich.console import Console
console = Console()
console.input("What is [i]your[/i] [bold red]name[/]? :smiley: ")

 

 出口

Console 类可以将写入它的任何内容导出为文本、svg 或 html。要启用导出,首先record=True在构造函数上进行设置。这告诉 Rich 保存您print()log(). 这是一个例子:

from rich.console import Console
console = Console(record=True)

写完内容后,您可以调用export_text(),export_svg()export_html()以字符串形式获取控制台输出。您也可以调用save_text()save_svg()save_html()将内容直接写入磁盘。


 

导出SVG

使用export_svg()orsave_svg()时,SVG 的宽度将匹配终端窗口的宽度(以字符为单位),而高度将自动缩放以适应控制台输出。

您可以在 Web 浏览器中打开 SVG。您还可以将其插入到带有<img>标签的网页中,或者将标记复制到 HTML 中。

from rich.console import Console
error_console = Console(stderr=True)

您可能还希望style在控制台上设置参数以使错误消息在视觉上清晰可见。您可以这样做:

 
error_console = Console(stderr=True, style="bold red")

文件输出

您可以通过在构造函数上设置参数来告诉 Console 对象写入文件file——它应该是为写入文本而打开的类似文件的对象。您可以使用它来写入文件,而不会在终端上出现输出。这是一个例子:

import sys
from rich.console import Console
from datetime import datetime

with open("report.txt", "wt") as report_file:
    console = Console(file=report_file)
    console.rule(f"Report Generated {datetime.now().ctime()}")

捕获输出

在某些情况下,您可能希望从控制台捕获输出,而不是直接将其写入终端。您可以使用capture()返回上下文管理器的方法来执行此操作。退出此上下文管理器时,调用get()以返回本应写入终端的字符串。这是一个例子

from rich.console import Console
console = Console()
with console.capture() as capture:
    console.print("[bold red]Hello[/] World")
str_output = capture.get()

捕获输出的另一种方法是将控制台文件设置为io.StringIO. 如果您在单元测试中测试控制台输出,这是推荐的方法。这是一个例子:

from io import StringIO
from rich.console import Console
console = Console(file=StringIO())
console.print("[bold red]Hello[/] World")
str_output = console.file.getvalue()

寻呼

如果您有一些长输出要呈现给用户,您可以使用寻呼机来显示它。寻呼机通常是操作系统上的一个应用程序,它至少支持按键滚动,但通常支持上下滚动文本和其他功能。

您可以通过调用pager()which 返回上下文管理器来分页控制台的输出。当寻呼机退出时,打印的任何内容都将发送到寻呼机。这是一个例子:

from rich.__main__ import make_test_card
from rich.console import Console

console = Console()
with console.pager():
    console.print(make_test_card())

备用屏幕

终端支持与常规终端分开的“交替屏幕”模式,并允许全屏应用程序保持输入和命令流不变。Rich 通过该set_alt_screen()方法支持此模式,但建议您使用screen()它返回一个上下文管理器,该管理器在退出时禁用备用模式。

from time import sleep
from rich.console import Console

console = Console()
with console.screen():
    console.print(locals())
    sleep(5)

上面的代码将在备用屏幕上显示一个漂亮的打印字典,然后在 5 秒后返回命令提示符。

您还可以提供一个可渲染screen()对象,当您调用时将显示在备用屏幕中update()

from time import sleep

from rich.console import Console
from rich.align import Align
from rich.text import Text
from rich.panel import Panel

console = Console()

with console.screen(style="bold white on red") as screen:
    for count in range(5, 0, -1):
        text = Align.center(
            Text.from_markup(f"[blink]Don't Panic![/blink]\n{count}", justify="center"),
            vertical="middle",
        )
        screen.update(Panel(text))
        sleep(1)

回答: PythonRich一个用于在终端中展示丰富文本的Python。它可以将文本加上颜色和样式,并以更具可读性的方式呈现数据,例如表格。使用Rich可以使命令行应用程序更具视觉吸引力,并作为调试辅助工具,通过漂亮的打印和语法突出显示数据结构。你可以通过在命令行中运行pip install Rich来安装Rich。一旦安装完成,你可以使用from rich import print来导入Rich,并使用rprint函数来以更优雅的方式输出Python对象。通过使用Rich,你可以为输出加上颜色和样式,使其更具有吸引力和可读性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pythonRich使用入门(打印彩色字体,表单,进度条与状态动画,高级数据类型)](https://blog.csdn.net/qq_43954124/article/details/112772262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python - rich 讲解](https://blog.csdn.net/iqifenxia/article/details/121120450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜里亚批

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值