热门标签 | 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库丰富和美化终端输出



推荐阅读
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 本文详细介绍了JSP(Java Server Pages)的九大内置对象及其功能,探讨了JSP与Servlet之间的关系及差异,并提供了实际编码示例。此外,还讨论了网页开发中常见的编码转换问题以及JSP的两种页面跳转方式。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 深入理解String.Format()方法的应用
    在.NET框架中,String.Format()方法是一种非常实用的工具,它能够帮助开发者以灵活多样的方式格式化字符串。本文将通过一个具体的示例,详细介绍如何利用String.Format()方法处理数值、日期时间和枚举类型的格式化。 ... [详细]
  • 开发笔记:2020 BJDCTF Re encode
    开发笔记:2020 BJDCTF Re encode ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
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社区 版权所有