热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonrich_Python本月热门项目:用rich库丰富和美化终端输出

您的浏览器不支持audio标签。如何美化python终端输出的json或dict格式呢?一般开发者们会选用pprint,或直接copy输出结果ÿ

您的浏览器不支持 audio 标签。

如何美化python终端输出的json或dict格式呢?一般开发者们会选用pprint,或直接copy输出结果,在vscode或其他美化json的页面格式化一下,因为格式美化输出并不是刚需,仅仅是为了便于理解。一般仅在比较成熟的项目上,想要美化下的化,就可以使用这篇文章推荐的rich库了。

0.安装

pip install rich

1.基本用法

from rich.console import Console

from rich.theme import Theme

custom_theme = Theme({

"info" : "dim cyan",

"warning": "magenta",

"danger": "bold red"

})

console = Console(theme=custom_theme)

console.print("This is information", style="info")

console.print("Something terrible happened!", style="danger")

console.print("Google", style="link https://google.com")

2.其他用法

1.格式化json文本

2.表格输出

还有其他的,比如markdown输出等等。稍微参考下就可以上手,本站以下面的progress为例,实际演示下:

3. Progress制作下载进度条

效果图如下:

实现代码:

import os

from concurrent.futures import ThreadPoolExecutor

from typing import Iterable

from urllib.request import urlretrieve

from rich.progress import (

BarColumn,

DownloadColumn,

TextColumn,

TransferSpeedColumn,

TimeRemainingColumn,

Progress,

TaskID,

)

progress = Progress(

TextColumn("[bold blue]{task.fields[filename]}", justify="right"),

BarColumn(bar_width=None),

"[progress.percentage]{task.percentage:>3.1f}%",

"•",

DownloadColumn(),

"•",

TransferSpeedColumn(),

"•",

TimeRemainingColumn(),

)

class progress_bar():

def __init__(self, task_id):

self.task_id = task_id

def __call__(self, block_num, block_size, total_size):

progress.update(self.task_id, advance=1 * block_size, total=total_size)

def touch(fname, times=None):

with open(fname, 'a'):

os.utime(fname, times)

def copy_url(task_id: TaskID, url: str, path: str) -> None:

"""Copy data from a url to a local file."""

urlretrieve(url, path, progress_bar(task_id))

touch(path + ".done")

def download(urls: Iterable[str], dest_dir: str):

"""Download multuple files to the given directory."""

with progress:

with ThreadPoolExecutor(max_workers=4) as pool:

for url in urls:

filename = url.split("/")[-1]

dest_path = os.path.join(dest_dir, filename)

task_id = progress.add_task("download", filename=filename)

pool.submit(copy_url, task_id, url, dest_path)

if __name__ == "__main__":

urls = ["https://xxxx","https://xxxx"] #此处为需要下载的资源列表,链接地址

download(urls,"./") #填入下载的资源列表,默认输出在当面目录

4. 小结

关于美化是否有必要?个人认为,如果不是最终商用输出,估计一辈子也不会用到此类工具。但是如果你想要输出带点色彩,那么这个rich库则是最佳选择,使用该库可以轻易做到美化的显示输出。那么,最为开发人员,你需要彩色吗?答案肯定是否!但是从小白或受众用户而言,添加这个则是锦上添花,很有必要。所以该库的使用也是非常矛盾的。顺便一提的是,jupyter的官方实验室没有把我打进jupyter的大门,微软的jupyter也没有,最终反而是谷歌的Colaboratory把我带进了jupyter。被谷歌提供的各种案例、机器学习给折服了。或许只有最终应用,才能凸显意义,否则就算有再好的工具,也没意义,而本篇的rich库就是这样,知道是好东西,只有广泛使用了才是你的。

佰阅部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:Python本月热门项目:用rich库丰富和美化终端输出



推荐阅读
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍了如何通过配置 Android Studio 和 Gradle 来显著提高构建性能,涵盖内存分配优化、并行构建和性能分析等实用技巧。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 使用 GitHub、JSDelivr、PicGo 和 Typora 构建高效的图床解决方案
    本文详细介绍了如何利用 GitHub 仓库、JSDelivr CDN、PicGo 图床工具和 Typora 编辑器,搭建一个高效且免费的图床系统。通过此方案,用户可以轻松管理和上传图片,并在 Markdown 文档中快速插入高质量的图片链接。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
author-avatar
每天进步一点就好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有