Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

最近后知后觉看到一个的rich库,可以让你的控制台输出结果美妙绝伦!!

如果你也还不知道这库的存在,倒是可以一看究竟,没准也会喜欢上她!

Rich 是一个 Python 库,可以为您在终端中提供富文本和精美格式。

Rich API可以很容易的在终端输出添加各种颜色和不同风格。Rich 还可以绘制漂亮的表格,进度条,markdown,突出显示语法的源代码及回溯等等,不胜枚举。

Rich 适用于 Linux,OSX 和 Windows。真彩色/表情符号可与新的 Windows 终端一起使用,Windows 的经典终端仅限 8 种颜色。

Rich 还可以与Jupyter 笔记本一起使用,而无需其他配置。

目录:

1. 准备工作

2. Rich的功能特色

3. 功能演示

3.1. 颜色与样式

3.2. 文本格式

立即学习“Python免费学习笔记(深入)”;

3.3. 文本高亮

3.4. 输入提示

3.5. 表情符号

3.6. 表格

3.7. 语法高亮

3.8. markdown格式输出

3.9. 进度条

3.10. 树结构

+ More

本文演示环境:

JupyterLab = 3.0.11,主题为暗色

1. 准备工作

安装rich库

pip install rich

登录后复制

简单的例子

from rich import printprint("[italic red]Hello[/italic red] World!")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

我们可以看到,上面例子中输出的Hello World中Hello被设置为红色斜体,World为默认值。

再看一个例子

from rich.panel import PanelPanel.fit("[bold yellow]Hi, I'm a Panel", border_style="red")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

这个例子,我们采用了Panel(面板),面板的轮廓为红色,内容文案为加粗的黄色。

以上只是简单介绍两个小例子,接下来我们来看看Rich是如何rich各种精美的输出吧!

2. Rich的功能特色

在jupyterlab里运行(截图是在jupyterlab暗黑主题下截取)

%run -m rich

登录后复制

在cmd终端里运行

python -m rich

登录后复制

可以得到下面这个展示rich库功能特色的简要说明,我们能清晰的看出它所具备的及支持的精美格式诸如:

颜色
样式
文本对齐方式
多语言支持
标记符号&表情
表格
语法高亮
markdown
进度条
…+more
Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3. 功能演示

我们这里只做简单的功能案例演示,详细的使用大家可以直接查看官方文档。

https://rich.readthedocs.io/en/stable/

3.1. 颜色与样式

我们先构造一个控制台对象,然这个对象有一个print方法,和python内置的功能基本一致。和内置的不同在于Rich会将文字自动换行以适合终端宽度,并且有几种方法可以为输出添加颜色和样式。

from rich.console import Consoleconsole = Console()console.print("Hello", style="magenta")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

可以看到,输出的Hello是酒红色的,颜色通过style参数设置,这里颜色是英文单词,同时也可以是16进制颜色码RGB或者颜色color(n)表示等等。

console.print("Rich库有点意思啊", style="red on white")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

上面这个例子,我们发现还可以通过style设置文本颜色及底色。

另外,我们还可以这样设置文本样式:通过[red] 与 [/red]来设置其框定的区域文本颜色与样式。

from rich import printprint("[bold red]alert![/bold red] Something happened")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.2. 文本格式

Rich有个Text类,用于我们对长文本进行颜色与样式调整。

from rich.console import Consolefrom rich.text import Textconsole = Console()text = Text("0123456789")text.stylize("bold magenta", 0, 6)console.print(text)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

对于上面这个案例,将字符串0123456789中[0,6)下标的字符颜色设置为酒红色粗体。

from rich import printfrom rich.panel import Panelfrom rich.text import Textpanel = Panel(Text("大家好,我是才哥。欢迎关注微信公众号:可以叫我才哥!", justify="center"))print(panel)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

这个例子中,我们可以看到它是将文本居中对齐在一个面板中。

3.3. 文本高亮

Rich可以通过正则或者其他形式让文本中指定的字符高亮。

比如,我们通过正则让文本中邮箱字符高亮:

from rich.console import Consolefrom rich.highlighter import RegexHighlighterfrom rich.theme import Themeclass EmailHighlighter(RegexHighlighter):    """Apply style to anything that looks like an email."""    base_style = "example."    highlights = [r"(?P[w-]+@([w-]+.)+[w-]+)"]theme = Theme({"example.email": "bold magenta"})console = Console(highlighter=EmailHighlighter(), theme=theme)console.print("Send funds to money@example.org")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

比如,我们可以将文本每个字符设置成随机的颜色:

from random import randintfrom rich import printfrom 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输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.4. 输入提示

Rich有个Prompt类,用于提示我们进行输入(类似input功能),不过它还支持指定值输入及选择判断等。

提示输入:

from rich.prompt import Promptname = Prompt.ask("Enter your name")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

指定值输入:

from rich.prompt import Promptname = Prompt.ask("Enter your name", choices=["才哥", "可以叫我才哥", "天才"], default="可以叫我才哥")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

选择判断:

from rich.prompt import Confirmis_rich_great = Confirm.ask("Do you like rich?")assert is_rich_great

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.5. 表情符号

将名称放在两个冒号之间即可在控制台输出中插入表情符号。

from rich.console import Consoleconsole = Console()console.print(":smiley: :pile_of_poo: :thumbs_up: ")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.6. 表格

Rich 可以使用 Unicode 框字符来呈现多变的表格,它包含多种边框,样式,单元格对齐等格式设置的选项。

from rich.console import Consolefrom rich.table import Tabletable = Table(title="Star Wars Movies")table.add_column("Released", justify="right", style="cyan", no_wrap=True)table.add_column("Title", style="magenta")table.add_column("Box Office", justify="right", style="green")table.add_row("Dec 20, 2019", "Star Wars: The Rise of Skywalker", "$952,110,690")table.add_row("May 25, 2018", "Solo: A Star Wars Story", "$393,151,347")table.add_row("Dec 15, 2017", "Star Wars Ep. V111: The Last Jedi", "$1,332,539,889")table.add_row("Dec 16, 2016", "Rogue One: A Star Wars Story", "$1,332,439,889")console = Console()console.print(table)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.7. 语法高亮

Rich 使用pygments库来实现语法高亮显示

from rich.console import Consolefrom rich.syntax import Syntaxmy_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)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.8. markdown格式输出

Rich 可以呈现markdown,并可相当不错的将其格式转移到终端。为了渲染 markdown,导入Markdown类,并使用包含 markdown 代码的字符串来构造它,然后将其打印到控制台。

MARKDOWN = """# 这是一级标题Rich 库能比较**完美**的输出markdown.1. This is a list item2. This is another list item```pythonfrom rich.console import Consolefrom rich.markdown import Markdownconsole = Console()md = Markdown(MARKDOWN)console.print(md)```![二维码](https://gitee.com/dxawdc/pic/raw/master/image/qrcode_for_gh_ce68560ed124_258.jpg)"""from rich.console import Consolefrom rich.markdown import Markdownconsole = Console()md = Markdown(MARKDOWN)console.print(md)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

3.9. 进度条

Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。基本用法:用track函数调用任何程序并迭代结果。

from rich.progress import trackimport timefor step in track(range(100)):    time.sleep(0.1)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下
进度条

3.10. 树结构

Rich有个Tree类,用于展示树结构。

from rich.tree import Treefrom rich import printtree = Tree("地球")baz_tree = tree.add("亚洲")baz_tree.add("[red]中国").add("[green]北京").add("[yellow]海淀区")print(tree)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

+ More

Padding填充:

from rich import printfrom rich.padding import Paddingtest = Padding("Hello", (2, 4), style="on blue", expand=False)print(test)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

Panel面板:

from rich import printfrom rich.panel import Panelprint(Panel("Hello, [red]World!", title="Welcome"))

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

layout布局:

from rich import printfrom rich.layout import Layoutlayout = Layout()layout.split_column(    Layout(name="upper",size = 10),    Layout(name="lower",size = 10))layout["lower"].split_row(    Layout(name="left"), Layout(name="right"),    ) layout["right"].split(    Layout(Panel("Hello")),    Layout(Panel("World!")))print(layout)

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

Live动态:

import timefrom rich.live import Livefrom rich.table import Tabletable = Table()table.add_column("Row ID")table.add_column("Description")table.add_column("Level")with Live(table, refresh_per_second=4):  # update 4 times a second to feel fluid    for row in range(12):        time.sleep(0.4)  # arbitrary delay        # update the renderable internally        table.add_row(f"{row}", f"description {row}", "[red]ERROR")

登录后复制

Python输出还可以这么花里胡哨,这个第三方库值得你了解一下

Live

以上就是Python输出还可以这么花里胡哨,这个第三方库值得你了解一下的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2228080.html

(0)
上一篇 2025年2月26日 12:45:57
下一篇 2025年2月26日 12:46:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 宝塔面板绑定不了宝塔账户如何解决

    宝塔账户绑定失败的原因可能包括:防火墙阻止了宝塔面板访问必要的网络端口。DNS解析问题导致无法解析宝塔服务器域名。服务器时间与宝塔服务器时间偏差过大。宝塔面板版本过旧。宝塔服务器本身存在问题。 宝塔面板绑定不了宝塔账户?这问题我遇到过不止一…

    2025年4月29日
    000
  • 宝塔面板插件维护方法

    宝塔面板插件维护涉及安全、性能、兼容性和用户体验。开发者必须定期更新代码、熟悉宝塔API接口,并做好兼容性处理。插件生命周期包括安装、卸载、升级和运行,维护工作应围绕此展开。常见错误包括依赖冲突、权限问题和数据库错误,可通过升级依赖、检查权…

    2025年4月29日
    000
  • 国外用宝塔面板吗

    国外用宝塔面板吗?答案是:用,但不多,而且情况复杂。首先,语言和文化差异是阻碍宝塔面板在国外普及的原因之一。此外,国外用户更习惯用命令行,而宝塔面板是傻瓜式操作,对他们来说反而成了累赘。其次,安全性也是考虑因素,国外用户对安全性要求较高。最…

    2025年4月29日
    000
  • 宝塔面板服务器被攻击怎么看

    宝塔面板服务器遭受攻击时,可采取以下步骤进行防御:分析日志查找异常访问,如高频请求、可疑路径访问或错误日志中的异常。封禁可疑IP地址,防止进一步访问。分析攻击方式,了解攻击者的策略。检查并修复服务器漏洞,避免被利用。升级软件确保最新版本,修…

    2025年4月29日
    000
  • 解决PremierePro安装过程中出现的错误代码

    解决premiere pro安装错误代码的方法包括:1. 错误代码1:以管理员身份运行安装程序,确保系统满足最低要求。2. 错误代码16:检查并确保网络连接稳定,尝试使用不同网络下载安装包。3. 错误代码23:重新下载安装包,检查文件完整性…

    2025年4月29日
    000
  • 验证下载的PremierePro安装包完整性的方法

    验证premiere pro安装包完整性的方法是使用校验和。1.从adobe官方网站下载安装包并获取校验和。2.使用命令行工具生成文件的校验和。3.比较两个校验和是否一致,确保文件完整性。 引言 在如今这个软件满天飞的时代,验证下载的Pre…

    2025年4月29日
    000
  • 定时任务有哪几种方式

    在软件开发和系统管理中,定时任务是一项至关重要且常见的功能。它使得我们在特定的时间或以特定的时间间隔执行指定的任务成为可能。那么,实现定时任务的方式有哪些呢? 操作系统自带的定时任务工具 许多操作系统都提供了内置的定时任务管理工具。例如,在…

    2025年4月29日
    000
  • 电脑文字提取有哪些技巧

    在信息泛滥的当今,处理和分析大量文本数据已成为许多工作和学习中不可或缺的环节。通过电脑软件提取文字资料,不仅能够极大地提升效率,还能减少人为错误。本文将介绍几种实用的电脑文字提取技巧与方法,助你在处理文字资料时更加游刃有余。 OCR技术的应…

    2025年4月29日
    000
  • python网络自动化运维工具哪些值得推荐

    随着数字化转型的推进,自动化运维已成为it领域的关键技能。python因其简洁的语法和强大的生态系统,在自动化运维中扮演着越来越重要的角色。本文将介绍2025年备受瞩目的python网络自动化运维工具,助力运维工程师更好地管理和维护服务器及…

    2025年4月29日
    000
  • LAMP架构下如何处理高并发

    在lamp(linux, apache, mysql, php/perl/python)架构中提升高并发处理能力,可以通过多种途径进行优化和改进,以提高系统的整体性能: 1. Apache服务器优化 采用多进程或多线程模式:根据服务器的硬件…

    2025年4月29日
    000

发表回复

登录后才能评论