Trong bài viết này, chúng ta sẽ tìm hiểu về một thư viện mạnh mẽ dành cho Python có tên là Rich.
Rich là một thư viện Python để viết giàu có văn bản (có màu sắc và kiểu dáng) vào thiết bị đầu cuối. Nó cho phép bạn hiển thị nội dung nâng cao như bảng, đánh dấu và mã được đánh dấu cú pháp.
Vì vậy, tại sao điều này là hữu ích? Chà, nếu bạn không sử dụng một công cụ như Rich, đầu ra mã của bạn trên thiết bị đầu cuối có thể hơi nhàm chán và khó hiểu. Nếu bạn muốn làm cho nó rõ ràng và đẹp hơn, bạn có thể muốn sử dụng Rich – và bạn đã đến đúng nơi để tìm hiểu cách thực hiện.
Cách cài đặt phong phú
Bạn có thể cài đặt Rich với píp như:
pip install Rich
Để biết tất cả những gì Rich có thể làm, bạn có thể gõ lệnh sau trong terminal:
python -m rich

Bây giờ bạn có thể thấy rằng chúng ta có thể làm khá nhiều thứ với Rich. Hãy thử một vài trong số chúng để xem chúng hoạt động như thế nào.
Làm thế nào để in phong phú bằng Python
Rich có khả năng đánh dấu đầu ra theo kiểu dữ liệu. Chúng tôi sẽ nhập giải pháp thay thế print
chức năng từ thư viện Rich có cùng các đối số như tích hợp sẵn print
.
Để tránh nhầm lẫn với tích hợp print
chức năng, chúng tôi sẽ nhập print
từ rich
thư viện như rprint
.
from rich import print as rprint
nums_list = [1, 2, 3, 4]
rprint(nums_list)
nums_tuple = (1, 2, 3, 4)
rprint(nums_tuple)
nums_dict = {'nums_list': nums_list, 'nums_tuple': nums_tuple}
rprint(nums_dict)
bool_list = [True, False]
rprint(bool_list)
Đầu ra:

Bạn có thấy các loại dữ liệu khác nhau được đánh dấu bằng các màu khác nhau như thế nào không? Điều này có thể giúp chúng tôi rất nhiều trong khi gỡ lỗi.
Cách kiểm tra giàu bằng Python
Nếu bạn sử dụng tích hợp help
chức năng xem tài liệu của thư viện, bạn sẽ thấy kết quả đầu ra nhàm chán.
import rich
print(help(rich))
Đầu ra:

Giàu có một inspect()
chức năng có thể tạo báo cáo về bất kỳ đối tượng Python nào. Nó là một công cụ hỗ trợ gỡ lỗi tuyệt vời và là một ví dụ điển hình về đầu ra mà Rich có thể tạo ra.
from rich import inspect
import rich
inspect(rich)
Đầu ra:

Cách tạo kiểu cho bảng điều khiển của bạn với Rich
Để kiểm soát hoàn toàn định dạng thiết bị đầu cuối, Rich cung cấp một Console
lớp.
Hãy viết một hàm để hợp nhất các từ điển Python.
from rich.console import Console
console = Console()
def merge_dict(dict_one, dict_two):
merged_dict = dict_one | dict_two
console.log(merged_dict, log_locals=True)
merge_dict({'id': 1}, {'name': 'Ashutosh'})
Đầu ra:

Trong ví dụ trên, chúng tôi đã sử dụng log
phương pháp cung cấp các khả năng giống như in, nhưng thêm một số tính năng hữu ích để gỡ lỗi ứng dụng đang chạy.
Ngoài ra còn một số phương pháp khác như print
, print_json
, out
, rule
, và như thế. Tìm hiểu thêm về chúng ở đây.
Cách sử dụng Tree trong Rich
Giàu có một Tree
class có thể tạo chế độ xem dạng cây trong thiết bị đầu cuối. Chế độ xem dạng cây là một cách tuyệt vời để trình bày nội dung của hệ thống tệp hoặc bất kỳ dữ liệu phân cấp nào khác. Mỗi nhánh của cây có thể có một nhãn có thể là văn bản hoặc bất kỳ Rich renderable nào khác.
Hãy xem một ví dụ bằng cách tạo một cây phả hệ:
from rich.tree import Tree
from rich import print as rprint
tree = Tree("Family Tree")
tree.add("Mom")
tree.add("Dad")
tree.add("Brother").add("Wife")
tree.add("[red]Sister").add("[green]Husband").add("[blue]Son")
rprint(tree)
Đầu ra:

Khi chúng ta tạo một thể hiện của Tree
lớp, chúng ta có thể sử dụng add()
phương pháp để thêm các chi nhánh vào nó. Để tạo một cây phức tạp, bạn chỉ cần sử dụng add()
phương pháp để thêm nhiều chi nhánh vào nó. chú ý Anh trai và Em gái nhánh trong ví dụ trên.
Trong tài liệu chính thức, chúng tôi có tệp tree.py xuất cấu trúc tệp bằng Tree. Đầu ra trông như thế này:

Cách hiển thị thanh tiến trình bằng Rich
Rich có thể hiển thị thông tin được cập nhật liên tục về trạng thái của các tác vụ chạy lâu, bản sao tệp, v.v. Bạn cũng có thể tùy chỉnh thông tin này. Theo mặc định, nó cung cấp mô tả về ‘nhiệm vụ’, thanh tiến trình, phần trăm hoàn thành và thời gian dự kiến còn lại.
Nhiều tác vụ được hỗ trợ với màn hình tiến độ phong phú, mỗi tác vụ có một thanh và thống kê tiến độ. Bạn có thể sử dụng điều này để theo dõi một số công việc đang được thực hiện trong các luồng hoặc quy trình.
Trước tiên chúng ta hãy thử progress.track
phương thức tạo thanh tiến trình.
from rich.progress import track
from time import sleep
def process_data():
sleep(0.02)
for _ in track(range(100), description='[green]Processing data'):
process_data()
Đầu ra:

Nếu chúng ta muốn ghi lại thời gian khi một tác vụ cụ thể được thực thi xong, chúng ta có thể sử dụng console.status
thay thế.
from rich.console import Console
from time import sleep
console = Console()
data = [1, 2, 3, 4, 5]
with console.status("[bold green]Fetching data...") as status:
while data:
num = data.pop(0)
sleep(1)
console.log(f"[green]Finish fetching data[/green] {num}")
console.log(f'[bold][red]Done!')

Bạn có thể làm việc trực tiếp với lớp Tiến trình nếu bạn cần một số tác vụ trong màn hình hoặc muốn tùy chỉnh các cột trong màn hình tiến trình. Sau khi bạn đã tạo một đối tượng Progress, hãy sử dụng (add_task()
) để thêm (các) nhiệm vụ và (update_progress()
) để cập nhật tiến độ.
Lớp Progress dự kiến sẽ được sử dụng làm trình quản lý bối cảnh, tự động bắt đầu và dừng hiển thị tiến trình.
import time
from rich.progress import Progress
with Progress() as progress:
task1 = progress.add_task("[red]Downloading...", total=100)
task2 = progress.add_task("[green]Processing...", total=100)
task3 = progress.add_task("[cyan]Installing...", total=100)
while not progress.finished:
progress.update(task1, advance=0.9)
progress.update(task2, advance=0.6)
progress.update(task3, advance=0.3)
time.sleep(0.02)
Đầu ra:

Cách hiển thị Rich Columns trong Python
Rich có thể hiển thị văn bản hoặc các kết xuất Rich khác trong các cột gọn gàng với Columns
lớp. Để sử dụng, hãy xây dựng một phiên bản Cột có thể lặp lại các kết xuất có thể lặp lại và in nó ra Bảng điều khiển.
import json
from urllib.request import urlopen
from rich.console import Console
from rich.columns import Columns
from rich.panel import Panel
def get_content(user):
"""Extract text from user dict."""
country = user["location"]["country"]
name = f"{user['name']['first']} {user['name']['last']}"
return f"[b]{name}[/b]\n[yellow]{country}"
console = Console()
users = json.loads(urlopen("https://randomuser.me/api/?results=30").read())["results"]
user_renderables = [Panel(get_content(user), expand=True) for user in users]
console.print(Columns(user_renderables))
Đầu ra:

Cách hiển thị bảng Rich trong Python
nhà giàu Table
class cung cấp nhiều cách khác nhau để hiển thị dữ liệu dạng bảng cho thiết bị đầu cuối. lớp này có add_column()
và add_row()
các phương thức để thêm cột và hàng tương ứng vào thể hiện của bảng được tạo từ Table
lớp.
Hãy tạo một bảng cho danh sách việc cần làm của chúng ta. Bảng này sẽ có ba cột – S.Không., Nhiệm vụ, và Trạng thái.
from rich.console import Console
from rich.table import Table
table = Table(title="Todo List")
table.add_column("S. No.", style="cyan", no_wrap=True)
table.add_column("Task", style="magenta")
table.add_column("Status", justify="right", style="green")
table.add_row("1", "Buy Milk", "✅")
table.add_row("2", "Buy Bread", "✅")
table.add_row("3", "Buy Jam", "❌")
console = Console()
console.print(table)
Đầu ra:

kết thúc
Trong hướng dẫn này, chúng ta đã học cách sử dụng Rich để làm đẹp thiết bị đầu cuối. Có rất nhiều tính năng khác mà Rich hỗ trợ. Tìm hiểu thêm về chúng trong tài liệu chính thức.
Vui lòng rẽ nhánh và chơi với mã nguồn của bài viết này tại đây.
Cảm ơn vì đã đọc!
Đăng ký nhận bản tin của tôi