Hello,我是老鬼~~

昨天和大家聊了聊拼多多的事,

没想到啊,

这事现在是越闹越大、持续发酵!

知乎官方证实了拼多多删帖行为之后,

在昨晚深夜又把拼多多号给封了,

违反社区规定、永久封号!

鬼哥还在知乎上面搜了搜、属实!

终端神器、牛逼 Plus_java

知乎对拼多多账号采取封号措施,

老鬼觉得这是一种保护。

大家是如何看待呢?

终端神器、牛逼 Plus_java_02

今日分享

今天鬼哥给大家推荐一个 Python 的命令行终端神器 :Rich

通过Rich可以为终端提供富文本和精美格式,

使你的命令行工具炫酷起来(Sao)~~

终端神器、牛逼 Plus_java_03

Rich 适用于 Linux,OSX 和 Windows,

不用担心自己的设备用不了撒~~

如何安装

使用pip或其他 PyPi 软件包管理器进行安装。

  •  
pip install rich

详细展示

Rich for print

想要将 Rich 的输出功能添加到您的应用程序中,

只需导入Rich的print方法就OK!

  •  
from rich import print
print("Hello, [bold magenta]World[/bold magenta]!", ":vampire:", locals())

终端神器、牛逼 Plus_java_04

控制台

对 Rich 终端内容进行更多控制,需要导入并构造一个控制台对象。

  •  
from rich.console import Console
console = Console()

Console 对象含有一个print 方法,它的界面与 python 内置的print功能界面相似。

  •  
console.print("Hello", "World!")

通过添加style关键字参数来为整个输出设置样式。

  •  
console.print("Hello", "World!", style="bold red")

终端神器、牛逼 Plus_java_05

日志

Console 对象具有一个log()方法,

该方法具有与print()类似的界面,

还能够成列显示当前时间以及被调用的文件和行。

  •  
from rich.console import Consoleconsole = 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()

终端神器、牛逼 Plus_java_06

表格

Rich 可以使用 Unicode 框字符来呈现多变的表格,

包含多种边框,样式,单元格对齐等格式设置的选项。

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

终端神器、牛逼 Plus_java_07

进度条

Rich 可以渲染多个不闪烁的进度条形图,跟踪长时间运行的任务。

基本用法:用track函数调用任何程序并迭代结果。

  •  
from rich.progress import track
for step in track(range(100)): do_step(step)

终端神器、牛逼 Plus_java_08

 

将内容通过排列整齐的,具有相等或最佳的宽度的列来呈现。

  •  
import osimport sys
from rich import printfrom rich.columns import Columns
directory = os.listdir(sys.argv[1])print(Columns(directory))

终端神器、牛逼 Plus_java_09

Markdown

Rich 可以呈现Markdown,

并且将格式转移到终端。

为了渲染 markdown,

需要导入Markdown 类,

并使用包含 markdown 代码的字符串来构造它。

  •  
from rich.console import Consolefrom rich.markdown import Markdown
console = Console()with open("README.md") as readme: markdown = Markdown(readme.read())console.print(markdown)

终端神器、牛逼 Plus_java_10

语法高亮显示

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

使用方法类似于渲染 markdown,

构造一个Syntax对象并将其打印到控制台。

  •  
from rich.console import Consolefrom rich.syntax import Syntax
my_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:returnfirst = Truefor value in iter_values: yield first, False, previous_valuefirst = False previous_value = value yield first, True, previous_value'''syntax = Syntax(my_code, "python", theme="monokai", line_numbers=True)console = Console()console.print(syntax)

终端神器、牛逼 Plus_java_11

Tracebacks

Rich渲染漂亮的Tracebacks,

比标准 Python Tracebacks更容易阅读,

并且能够显示更多代码。

终端神器、牛逼 Plus_java_12

GitHub地址:https://github.com/willmcgugan/rich

 

终端神器、牛逼 Plus_java_13