console.print(“Hello”, “World!”, style=“bold red”)
输出如下图:
这个范例一次只设置了一行文字的样式。如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于 bbcode。示例如下:
console.print(“Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].”)
# 5.Console 控制台记录
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 = [“Deadpool”, “Rise of the Skywalker”]
console.log(“Hello from”, console, “!”)
console.log(test_data, log_locals=True)
test_log()
以上范例的输出如下:
注意其中的 log_locals 参数会输出一个表格,该表格包含调用 log 方法的局部变量。
log 方法既可用于将长时间运行应用程序(例如服务器)的日志记录到终端,也可用于辅助调试。
Logging 处理程序
你还可以使用内置的处理类来对 Python 日志记录模块的输出进行格式化和着色。下面是输出示例:
# 6. 表情符号
将名称放在两个冒号之间即可在控制台输出中插入表情符号。示例如下:
console.print(“😃 :vampire: :pile_of_poo: :thumbs_up: :raccoon:”)
😃 🧛 💩 👍 🦝
请谨慎地使用此功能。
# 7.表格
Rich 包含多种边框,样式,单元格对齐等格式设置的选项。下面是一个简单的示例:
from rich.console import Console
from rich.table import Column, Table
console = Console()
table = Table(show_header=True, header_style=“bold magenta”)
table.add_column(“Date”, style=“dim”, width=12)
table.add_column(“Title”)
table.add_column(“Production Budget”, justify=“right”)
table.add_column(“Box Office”, justify=“right”)
table.add_row(
“Dev 20, 2019”, “Star Wars: The Rise of Skywalker”, “$275,000,000”, “$375,126,118”
)
table.add_row(
“May 25, 2018”,
“[red]Solo[/red]: A Star Wars Story”,
“$275,000,000”,
“$393,151,347”,
)
table.add_row(
“Dec 15, 2017”,
“Star Wars Ep. VIII: The Last Jedi”,
“$262,000,000”,
“[bold]$1,332,539,889[/bold]”,
)
console.print(table)
该示例的输出如下:
请注意,控制台标记的呈现方式与 print() 和 log() 相同。实际上,由 Rich 渲染的任何内容都可以添加到标题/行(甚至其他表格)中。
Table 类很聪明,可以调整列的大小以适合终端的可用宽度,并能根据需要做文本环绕的处理。下面是相同的示例,输出与比上表小的终端上:
# 8.进度条
Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。
基本用法:用 track 函数调用程序并迭代结果。下面是一个例子:
from rich.progress import track
for step in track(range(100)):
do_step(step)
添加多个进度条并不难。以下是效果示例:
这些列可以配置为显示你所需的任何详细信息。
内置列包括完成百分比,文件大小,文件速度和剩余时间。下面是显示正在进行的下载的示例:
它可以在显示进度的同时下载多个 URL。要自己尝试一下,请参阅示例文件中的 examples/downloader.py ,在Python实用宝典公众号后台回复 rich示例 下载全部示例。
# 9.按列输出数据
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))
以下屏幕截图是列示例的输出,该列显示了从 API 提取的数据:
# 10.Markdown
Rich 可以呈现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)
该例子的输出如下图:
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!