绚烂之境:Python Rich,让终端输出更炫酷!
转载请注明出处️
作者:测试蔡坨坨
原文链接:caituotuo.top/c8c7bd95.html
初识rich
你好,我是测试蔡坨坨。
在代码的世界里,每一行都是一个故事,每一个变量都是一个角色,而打印则是展示这些故事与角色的窗口。然而,这个窗口并非都是朴实无华的,有时候,我们需要一种更加「艺术」的方式来展示我们的故事。Python中的rich库便是一位大师级的艺术家,为我们的终端带来了绚丽的色彩和丰富的细节。
当我们涉足爬虫的世界时,往往需要在终端界面上输出各种信息,比如爬取进度、数据摘要等等。然而,传统的打印方式显得呆板乏味,无法完全展现我们所想表达的意境。这时候,rich库便是我们的得力助手。
让我们想象一下,在爬取数据的过程中,我们不仅仅是机械地输出进度信息,而是将终端界面变成了一个充满艺术气息的画布。比如,我们可以利用rich库的各种丰富功能,给不同类型的信息赋予不同的颜色、样式、甚至动画效果。这样一来,打印出来的信息不再是单调的文字,而是一幅幅生动的画面,让人仿佛置身于一个色彩斑斓的世界之中。
以爬取网易云音乐为例:
效果演示:https://www.caituotuo.top/videos/20240330_194828.mp4
PS:需要源码的加文末VX领取。
除此之外,rich库还可以在其他领域展现其艺术魅力。比如,在数据分析与可视化中,我们可以利用rich库将分析结果以更加美观的方式展示出来;在机器学习与深度学习中,我们可以利用rich库将模型训练的过程以动画的形式展现出来,让人一目了然地看到模型是如何不断优化的。
说了这么多,不如来一睹为快,看看如何运用吧。
rich的使用
官方文档:https://github.com/Textualize/rich
应用场景:
- 丰富的文本样式:rich 支持斜体、粗体、下划线等各种文本样式,让文字更具有表现力。
- 多彩的颜色支持:通过 rich,可以为文字、背景和边框添加各种各样的颜色,使得终端输出更加生动。
- 强大的布局选项:rich 提供了灵活的布局选项,可以轻松创建表格、树状结构等复杂的排版效果。
- 支持图像输出:除了文字信息,rich 还支持在终端中输出图片,让你的输出更具有视觉冲击力。
- 动画效果:rich 还支持在终端中播放动画,为用户呈现出更加生动的交互体验。
安装
pip install rich
安装完成后,输入python rich -m
可以查看它的特性(Win10系统推荐使用Windows terminal效果更佳):
可以看出rich支持输出各种颜色、多语言文字、表格、Markdown、代码块、进度条,甚至emoji表情……
rich print
第一个简单的例子,打印locals()变量里面的一些属性:
from rich import print
print("Hello, [bold magenta]CaiTuotuo[/bold magenta]!", ":vampire:", locals())
彩色文字
使用Console对象输出彩色文字:
from rich.console import Console
console = Console()
console.print("Hello", "测试蔡坨坨!", style="bold green")
打印表格
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")
table.add_column("Production Budget", justify="right")
table.add_column("Box Office", justify="right")
table.add_row(
"Dec 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)
进度条
使用progress模块输出进度条:
import time
from rich.progress import track
def do_step(step):
time.sleep(0.1)
for step in track(range(100)):
do_step(step)
以上主要介绍了rich常见的用法,更多的使用场景可参考官方给出的example:
其中,几个比较有意思的,比如Spinners.py输出各种会动的emoji:
from time import sleep
from rich.columns import Columns
from rich.panel import Panel
from rich.live import Live
from rich.text import Text
from rich.spinner import Spinner, SPINNERS
all_spinners = Columns(
[
Spinner(spinner_name, text=Text(repr(spinner_name), style="green"))
for spinner_name in sorted(SPINNERS)
],
column_first=True,
expand=True,
)
with Live(
Panel(all_spinners, title="Spinners", border_style="blue"),
refresh_per_second=20,
) as live:
while True:
sleep(1)
彩虹文字:
from random import randint
from rich import print
from rich.highlighter import Highlighter
class 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中的rich库为我们提供了一种全新的打印方式,让我们能够以更加艺术的方式来展示我们的代码与数据。在这个丰富多彩的终端世界里,每一行代码都是一幅画,每一个变量都是一个色彩斑斓的角色,让人仿佛置身于一个充满想象力与创造力的境界之中。
让我们一起踏上这场绚烂之旅,探索Python中的艺术打印之美!
绚烂之境:Python Rich,让终端输出更炫酷!的更多相关文章
- 用 Python 给程序加个进度条,让你的看起来更炫酷?
对于开发或者运维来说,使用 Python 去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效地监控任务的进度?除了在任务中加上 Log 外,还能不能有另一种方式来了解任务进展到哪一步 ...
- 来看看Python炫酷的颜色输出与进度条打印
英语单词优化 上篇文章写到了Python开发英语单词记忆工具,其中依赖了bootstrap.css jQuery.js 基础html模块以及片段的css样式.有些朋友问,怎么能将这个练习题打包成单独的 ...
- 花里胡哨,如何在Linux终端输出带有颜色的字体,将带颜色的字体赋值给变量
背景 在日常操作Linux的情况下,总会遇到一些需求,比如说,把输出的内容用不同颜色标注出来,以达到醒目.提示的目的,那么如何在Linux终端输出带有颜色的字体呢? Linux终端输出字符颜色 ...
- python 中简单的输出语句
1 python 中简单的输出语句 #coding:utf-8#输出的是整数,得到的也是整数,用raw_inputusername=raw_input('请输入用户名:')#输出的是整数或者字符串,得 ...
- “jupyter notebook 不能导入python库但是终端上可以实现”的问题的解决
在使用jupyter notebook的过程中,创建了一个新的环境(anaconda中env)后遇到了这样一个问题,就是: 在jupyter notebook上运行程序,中间发现有一个python库未 ...
- 通过printf设置Linux终端输出的颜色和显示方式
转载自:http://www.cnblogs.com/clover-toeic/p/4031618.html 在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出 ...
- 老李分享:开发python的unittest结果输出样式
老李分享:开发python的unittest结果输出样式 Python的unittest结果命令行输出,格式比较乱.为了提高格式输出的可读性,实现可以不同的颜色标识.所以准备扩展Python的un ...
- Python中将一个对象倒序输出的4种方法
Python中将一个对象倒序输出的4种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建测试列表 #方法1: >>> lst.rev ...
- python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出
在python中,要输出json格式,需要对json数据进行编码,要用到函数:json.dumps json.dumps() :是对数据进行编码 #coding=gbkimport json dict ...
- 【转】Python之向日志输出中添加上下文信息
[转]Python之向日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定 ...
随机推荐
- MySQL的MVCC概念介绍(转)
并发字段修改业务 最近在主要在做"工作流引擎"课题的预研工作,在涉及到"会签任务"(工作流业务概念,这与我们今天讨论文问题没有太多关联)的时候,遇到了一个并发修 ...
- 使用 CMake 编写 Windows 静态库
最近有一个多个 .h .cc .cpp 编译成静态库的需求,故记录下过程 静态库不同于动态库,它不需要 main 入口,只要各个源文件与头文件能对应,也就是源文件和头文件引用的头文件能够找到函数的符号 ...
- win32-localtime的使用
下面的例子用于反映本地系统的日期格式变化 // locale test #include <stdio.h> #include <locale.h> #include < ...
- 了解企业架构EA(Enterprise Architecture)
一.企业架构简介 企业架构:Enterprise Architecture,EA,或企业体系结构,是在信息系统架构设计与实践基础上发展起来的一个特殊领域. 但是企业架构现在还没有一个公认的定义,综合现 ...
- 深入理解Go语言(04):scheduler调度器-GMP里结构体源码分析
在前面一节中简单介绍了golang的调度模型-GPM模型,介绍了他们各自的作用.这篇文章就来看看他们的源码结构. Go版本:go1.13.9 M结构体 M结构体是OS线程的一个抽象,主要负责结合P运行 ...
- 使用俩个链接在一起的容器运行wordpress
# 问题,如何分离mysql和wordpress,使它们每个都单独运行一个容器. # 解决办法:运行时通过--link选项使它们链接在一起 --link <container_name>: ...
- 【Azure 环境】微软云上主机,服务的安全更新疑问
[问题一]微软云上的虚拟机,不论是Windows系统or Linux 系统,系统的安全补丁是由微软云平台 打上补丁进行修复,还是使用虚拟机的用户手动更新修复呢? [答]这些补丁不会由平台来直接操作 ...
- 【Azure 应用服务】在App Service for Windows中实现反向代理
问题描述 如何在App Service for Windows(.NET Stack)中,如何实现反向代理呢? 正向代理:客户端想要访问一个服务器,但是它可能无法直接访问这台服务器,这时候这可找一台可 ...
- 1. zookeeper简介与应用场景
1.1 zookeeper介绍 zookeeper是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现. 能够很好保证分布式环境中数据的一致性.正是基于这样的特性,使得zo ...
- 学习笔记:勒让德(Legendre)符号
授课老师:ybx.chh. 授课时间:2024/3/8. 授课内容纲要:勒让德符号及其性质(欧拉准则,高斯引理,二次互反律). 勒让德符号概括 好像在 OI 和 MO 当中都挺有用的. 勒让德符号的定 ...