Hello,我是老鬼~~
昨天和大家聊了聊拼多多的事,
没想到啊,
这事现在是越闹越大、持续发酵!
知乎官方证实了拼多多删帖行为之后,
在昨晚深夜又把拼多多号给封了,
违反社区规定、永久封号!
鬼哥还在知乎上面搜了搜、属实!
知乎对拼多多账号采取封号措施,
老鬼觉得这是一种保护。
大家是如何看待呢?
今日分享
今天鬼哥给大家推荐一个 Python 的命令行终端神器 :Rich,
通过Rich可以为终端提供富文本和精美格式,
使你的命令行工具炫酷起来(Sao)~~
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())
控制台
对 Rich 终端内容进行更多控制,需要导入并构造一个控制台对象。
from rich.console import Console
console = Console()
Console 对象含有一个print
方法,它的界面与 python 内置的print
功能界面相似。
console.print("Hello", "World!")
通过添加style
关键字参数来为整个输出设置样式。
console.print("Hello", "World!", style="bold red")
日志
Console 对象具有一个log()
方法,
该方法具有与print()
类似的界面,
还能够成列显示当前时间以及被调用的文件和行。
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()
表格
Rich 可以使用 Unicode 框字符来呈现多变的表格,
包含多种边框,样式,单元格对齐等格式设置的选项。
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)
进度条
Rich 可以渲染多个不闪烁的进度条形图,跟踪长时间运行的任务。
基本用法:用track
函数调用任何程序并迭代结果。
from rich.progress import track
for step in track(range(100)):
do_step(step)
列
将内容通过排列整齐的,具有相等或最佳的宽度的列来呈现。
import os
import sys
from rich import print
from rich.columns import Columns
directory = os.listdir(sys.argv[1])
print(Columns(directory))
Markdown
Rich 可以呈现Markdown,
并且将格式转移到终端。
为了渲染 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)
语法高亮显示
Rich 使用pygments库来实现语法高亮显示。
使用方法类似于渲染 markdown,
构造一个Syntax
对象并将其打印到控制台。
from rich.console import Console
from 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:
return
first = True
for value in iter_values:
yield first, False, previous_value
first = False
previous_value = value
yield first, True, previous_value
'''
syntax = Syntax(my_code, "python", theme="monokai", line_numbers=True)
console = Console()
console.print(syntax)
Tracebacks
Rich渲染漂亮的Tracebacks,
比标准 Python Tracebacks更容易阅读,
并且能够显示更多代码。
GitHub地址:https://github.com/willmcgugan/rich