Hi các bạn , xin lỗi các bạn vì mấy hôm mình bận quá chưa ra bài được . Hôm nay mình trợ lại để hướng dẫn các bạn sài một thư viện cực mới của Python . Thư viện Rich là một thư viện giúp làm đẹp các ký tự in ra và các tiến trình bạn chạy khi sài lệnh trên CMD trên windows 10 cũng như Terminal Ubuntu và Mac OS . Chúng ta cùng tìm hiểu về cách cài đặt và sử dụng thư viện Rich trong Python nhé !

I . Thư Viện Rich Là Gì Và Cách Cài Đặt

Thư viện Rich là một thư viện khá mới trong python . Nó được phát triển bởi Will McGugan . Phiên bảng đầu tiên ( v0.6.0) ra mắt vào ngày 3/3/2020 .Sau rất nhiều cải tiến thì phiên bảng vừa cho ra mắt bảng 9.4.0 vào ngày 12/12/2020 với tựa đề We got a live one .

Rich là một thư viện Python để viết văn bản một cách đẹp đẽ hơn trên Terminal(với màu sắc và kiểu dáng) . Nó còn dùng để hiển thị nội dung nâng cao như bảng, dấu xuống dòng và code đánh dấu cú pháp. Sử dụng Rich để làm cho các ứng dụng chạy bằng Terminal hay CMD của bạn hấp dẫn trực quan và trình bày dữ liệu theo cách dễ đọc hơn. Rich cũng có thể là một công cụ hỗ trợ gỡ lỗi hữu ích bằng cách in ấn đẹp và cấu trúc dữ liệu làm nổi bật cú pháp.

  • Cách để cài đặt Rich đơn giản là vào CMD hay Terminal gõ : pip install rich.
  • Để kiểm tra xem đã cài đặt thành công chưa ta gõ tiếp : python -m rich
Ảnh Test thư viện Rich
Ảnh Test thư viện Rich

Như vậy là chúng ta đã biết Rich là gì và cách cài đặt như thế nào rồi ! Tiếp theo , chúng ta cùng đến với một vài cách sử dụng sơ sơ về Rich .

II. Cách Sử Dụng Thư Viện Rich Trong Python

1.Cách in ra chữ đẹp hơn trong CMD hay Terminal

Để in ra chữ đẹp hơn trong CMD hay Terminal bằng code python với Rich ta sử dụng lần lượt những lệnh sau trong CMD hay Terminal nhé :

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

Và chúng ta đã thu được kết quả là chúng ta thu được những chữ có màu sắc cũng như kiểu cách đẹp hơn so với kiểu chữ của CMD hay Terminal :

Ảnh In Chữ Trong Thư Viện Rich

2. Làm thử chương trình in chữ với Rich

Đầu tiên , Các bạn tạo cho mình một thư mục tên rich và trong thư mục rich chúng ta tạo một file tên in_chu.py và mở nó bằng Visual Studio Code . Tiếp theo các bạn copy đoạn code sau vào để chạy thử :

from rich import print
print("[bold yellow]Son[/bold yellow] [bold magenta]Đẹp[/bold magenta] [italic red]Trai![/italic red]", ":vampire:", locals())

Chúng ta có thể thấy cú pháp để chỉnh sửa chữ là : [kieuchu mausac]chữ cần chỉnh[/kieuchu mausac].

Sau đó các bạn tiến hành trỏ CMD hay Terminal về thư mục rich và chạy lệnh : python in_chu.py . Sẽ cho ra kết quả như hình dưới:

Kết quả chương trình in chữ màu trên CMD với Rich
Kết quả chương trình in chữ màu trên CMD với Rich

Rõ ràng kết quả thu được là 3 màu chữ với kiểu cách khác nhau không còn khô khan như khi ta sử dụng lệnh print() trong python nữa phải không nào!

3. Cách In Một Đoạn Văn Bản Với Rich

Nếu các bạn cứ thực hiện in từng chữ như trong mục 2 thì thực sự rất chi là cực . May mắn thay Rich đã biết điều này và giúp chúng ta in ra đoạn văn bản một cách đẹp đẽ và nhanh chóng mà không cần phải thực hiện chỉnh sửa từng chữ nữa. Chúng ta cùng kiểm tra thử bằng cách vào CMD hay Terminal và gõ từng dòng lệnh sau :

python
from rich.console import Console
console = Console()
console.print("Hello", "World!","Tôi là son nè !", style="bold red")

Chúng ta đã thu được một đoạn văn bản đều được chỉnh màu chữ và kiểu chữ thật dễ dàng phải không nào! Các bạn có thể viết chương trình kiểm tra và chạy thử như mục 2 nhé !

4. Cách In Một Bảng Như Word Trên CMD Đơn Với Rich

Các bạn thường xuyên làm word sẽ thấy những cái bảng để ghi dữ liệu thống kê vào . Các bạn có từng nghĩ là trên màn hình CMD hay Terminal cũng có thể in được các bảng như vậy . Để làm điều này , các bạn mở thư mục rich vừa tạo ở mục 2 và tạo thêm file in_table.py . Sau đó copy đoạn code này vào để kiểm tra thử :

from rich.console import Console
from rich.table import Table

console = Console()

table = Table(show_header=True, header_style="bold magenta")
# thêm cột 
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")
#thêm hàng mỗi , mỗi cột trong hàng phân cách nhau bằng dấu ,
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]",
)
table.add_row(
    "Dec 16, 2020",
    "Son Nguyễn đã Ra Bài Này",
    "$10000.000,000,000",
    "[bold]$1,332,539,889[/bold]",
)

console.print(table)

Chúng ta tiến hành chạy như mục 2 với lệnh : python in_table.py và thu được kết quả như hình :

Ảnh in ra bảng trong CMD với Rich
Ảnh in ra bảng trong CMD với Rich

Có thể nhận thấy để tạo 1 table ta sài cấu trúc : table = Table(…) ,sau đó muốn thêm 1 cột ta sài cấu trúc : table.add_column(…) , nếu muốn thêm hàng ta sài : table.add_row(…).

5. Cách In Thanh Tiến Trình Trên CMD hay Terminal

Để có được một thanh tiến trình chạy từ 1 tới 100 ngầu như mấy anh hacker thì chúng ta có thể làm được với thư viện Rich trong python . Để test thử thanh tiến trình chúng ta đơn giản gõ vào CMD hoặc Terminal :

python -m rich.progress

Và chúng ta sẽ thu được kết quả như hình , trông khá bắt mắt với một CMD khô khan phải không nào . Như mấy cô gái cứ chê trai IT khô khan mà đâu biết trai IT ai cũng có tâm hồn ngôn tình vậy đó !

Ảnh thanh tiến trình trong thư viện Rich

Các bạn nhớ ấn Crtl + c nếu muốn dừng nhé ! Nó không tự dừng được đâu !

6. Cách làm 1 chương trình hiển thị quá trình tải trên CMD hay Terminal

Để tạo 1 chương trình tải một file nào đó từ link trên Internet và hiển thị phần trăm tải trên CMD hay Terminal chúng ta làm như sau : Đầu tiên các bạn vào lại thư mục rich và tạo cho mình file tai_file.py và copy đoạn code ngắn này về bỏ vào :

"""
A rudimentary URL downloader (like wget or curl) to demonstrate Rich progress bars.
"""

from concurrent.futures import ThreadPoolExecutor
from functools import partial
import os.path
import sys
from typing import Iterable
from urllib.request import urlopen

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(),
)


def copy_url(task_id: TaskID, url: str, path: str) -> None:
    """Copy data from a url to a local file."""
    response = urlopen(url)
    # This will break if the response doesn't contain content length
    progress.update(task_id, total=int(response.info()["Content-length"]))
    with open(path, "wb") as dest_file:
        progress.start_task(task_id)
        for data in iter(partial(response.read, 32768), b""):
            dest_file.write(data)
            progress.update(task_id, advance=len(data))


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, start=False)
                pool.submit(copy_url, task_id, url, dest_path)


if __name__ == "__main__":
    if sys.argv[1:]:
        download(sys.argv[1:], "./")
    else:
        print("Usage:\n\tpython downloader.py URL1 URL2 URL3 (etc)")

Tiếp đến các bạn , chạy file như mục 2 với cú pháp như sau :

python tai_file.py đường dẫn chứa file cần tải

Ví dụ mình sẽ tải file Python3.7 bằng chương trình thì mình sẽ chạy như sau :

python tai_file.py https://www.python.org/ftp/python/3.7.5/python-3.7.5-amd64.exe

Kết quả mình thu được :

Ảnh Down file với Rich

Có thể thấy quá trình hiển thị trang thái download file trên CMD phải không nào !

III. Kết Luận

Còn rất nhiều thứ hay ho về thư viện này chờ bạn khám phá . Các bạn có thể tìm hiểu thêm với đường link tham khảo mình để ở dưới nhé !

Để biết thêm nhiều kiến thức hay ho các bạn có thể tham gia nhóm của mình tại link : https://www.facebook.com/groups/164371998723215

Các bạn cần thêm thông tin hay sự giúp đỡ từ mình có thể ấn theo dõi mình trên Facebook và Nhắn tin trực tiếp với mình qua link : https://www.facebook.com/sonnguyen16032000

Hoặc xem thêm nhiều bài viết hay khác tại Blog Hóng Tin

Nguồn Tham Khảo : Tại trang giới thiệu của thư viện RichGithub của thư viện