Các ứng dụng CLI thường trả về văn bản có cùng màu với thiết bị đầu cuối. Luôn có những trường hợp chúng tôi muốn làm nổi bật đầu ra cho người dùng, chẳng hạn như cảnh báo hoặc thông báo lỗi. Trong những trường hợp đó, một chút màu sắc có thể tạo ra sự khác biệt
Bài viết này hướng dẫn bạn cách in đầu ra có màu trong thiết bị đầu cuối bằng Python có và không có thư viện
Trình tự thoát ANSI
Máy điện báo [TTY] của bạn, hay đúng hơn là thiết bị đầu cuối của bạn, không chỉ có khả năng hiển thị đầu ra của một chương trình. Nó có thể hiển thị một con trỏ đang di chuyển, tô màu văn bản, xóa toàn bộ màn hình và hơn thế nữa ngoài đầu ra tĩnh. Bạn có thể đã thấy các tiện ích dòng lệnh với văn bản đầy màu sắc và thanh tiến trình. Làm cách nào để chúng tôi kiểm soát việc trình bày dữ liệu mà chúng tôi đang xuất ra thiết bị đầu cuối?
Chúng tôi sử dụng Trình tự/Mã Thoát ANSI. Đây là những chuỗi đặc biệt sửa đổi hành vi của thiết bị đầu cuối. Một ví dụ quen thuộc sẽ là ký tự \n
, là một chuỗi Dòng mới. Nhập ký tự này sẽ in một dòng mới trong đầu ra
Văn bản được tô màu trên thiết bị đầu cuối của bạn dựa trên chuỗi ANSI Escape. Bài viết này tập trung vào các trình tự thoát để tô màu văn bản
Hai cách phối màu được sử dụng rộng rãi trong các thiết bị đầu cuối
- 16 màu [8 Nền + 8 Nền trước]
- 256 màu
Hãy bắt đầu tô màu đầu ra của chúng ta với tùy chọn 16 màu
16 màu sắc trong Python thô
Bảng 16 màu bao gồm hai bộ 8 màu, mỗi bộ [8 nền và 8 nền trước] và chúng có thể được hiển thị trong thiết bị đầu cuối bằng cách sử dụng cú pháp sau
Hãy thử nghiệm điều này, bằng cách in một mẫu màu sặc sỡ với văn bản đậm màu đỏ và nền màu vàng. Mã kiểu để thể hiện văn bản in đậm là 2
. Mã màu cho văn bản màu đỏ ở nền trước là 31
và 43
cho nền màu vàng. Vì vậy, với ý nghĩ đó, cú pháp để biểu diễn bố cục này là
print['\033[2;31;43m CHEESY']
Chạy lệnh trên trong trình thông dịch Python của bạn [hoặc tệp]. Bạn sẽ thấy đầu ra này
Điều đó không hoàn toàn đúng, văn bản sến sẩm của chúng tôi đang tràn sang dòng tiếp theo. Chúng tôi cần một điểm đặt lại để dừng in màu. Điều này có thể được thực hiện bằng cách nối thêm \033[0;0m
vào chuỗi dưới dạng
print['\033[2;31;43m CHEESY \033[0;0m']
Mã \033[0;0m
đại diện cho mẫu thiết lập lại đưa thiết bị đầu cuối trở lại bảng màu ban đầu. Điều này sẽ cung cấp đầu ra sau
Trông đẹp hơn nhiều
16 màu trong Colorama - Mô-đun tích hợp
Colorama là một gói Python cung cấp các phương thức để in văn bản màu trong Python. Nó chỉ hỗ trợ sơ đồ 16 màu. Mô-đun chuẩn bị các chuỗi ANSI Escape để tạo văn bản có màu. Hãy cài đặt mô-đun với
print['\033[2;31;43m CHEESY \033[0;0m']
1$ pip install colorama
Chúng tôi khuyên bạn nên cài đặt nó trong môi trường ảo. Sau khi thiết lập, hãy bắt đầu in văn bản màu với Colorama
Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Đầu tiên chúng tôi nhập các chức năng.
print['\033[2;31;43m CHEESY \033[0;0m']
2 [để khởi tạo mô-đun và đặt print['\033[2;31;43m CHEESY \033[0;0m']
3 thành print['\033[2;31;43m CHEESY \033[0;0m']
4 để chúng tôi không phải đặt lại thủ công], print['\033[2;31;43m CHEESY \033[0;0m']
5 [Đối tượng văn bản tiền cảnh], print['\033[2;31;43m CHEESY \033[0;0m']
6 [Đối tượng nền] và print['\033[2;31;43m CHEESY \033[0;0m']
7 [Đối tượng kiểu]. Mỗi đối tượng có bộ hằng số riêng có thể được gọi trong hàm print['\033[2;31;43m CHEESY \033[0;0m']
8Bằng cách nối các thành phần này theo cách thân thiện với con người, Colorama chuyển đổi các giá trị như
print['\033[2;31;43m CHEESY \033[0;0m']
9 thành 43
đối với đối tượng print['\033[2;31;43m CHEESY \033[0;0m']
6, $ pip install colorama
2 thành 31
đối với đối tượng print['\033[2;31;43m CHEESY \033[0;0m']
5, v.v. Cuối cùng, chúng tôi kết thúc với một Trình tự ANSI, giống như lần trước, tuy nhiên, chúng tôi không cần phải tự biết mã - Colorama làm điều này cho chúng tôiKhông yêu cầu mẫu đặt lại, vì chúng tôi đã đặt đối số
print['\033[2;31;43m CHEESY \033[0;0m']
3 thành print['\033[2;31;43m CHEESY \033[0;0m']
4 trong khi khởi tạo phiên bảnChạy mã sẽ hiển thị này
256 màu trong Python thô
Với sự tiến bộ trong công nghệ, sơ đồ 256 màu thường thấy nhất trong các thiết bị đầu cuối. Nếu bạn đang sử dụng HĐH dựa trên Linux, bạn có thể kiểm tra bảng màu được thiết bị đầu cuối hỗ trợ bằng cách nhập lệnh sau
$ echo $TERM
Nếu lệnh này trả về
$ pip install colorama
7, thì thiết bị đầu cuối của bạn hỗ trợ tối đa 256 màuTự hỏi những màu sắc đó là gì?
Chúng ta có thể đi sâu vào ngay sau khi hiểu cú pháp của lược đồ 256 màu. Làm việc với 256 màu hơi khác so với làm việc với sơ đồ 16 màu
Có một trình giữ chỗ để xác định xem màu sẽ được áp dụng cho văn bản hay nền; . Tiếp theo là mã màu nằm trong khoảng từ 0 đến 255
Dựa trên cú pháp trên, hãy thử tạo lại biểu trưng StackAbuse trong Python bằng Trình tự thoát ANSI
Biểu trưng có nền màu xám nhạt [______3_______8] với các từ. Xếp chồng màu trắng [
$ pip install colorama
9] và Lạm dụng màu cam [$ echo $TERM
0]. Và tất nhiên, mã đặt lại cần được nhúng vào chuỗiNhư đã nói, chúng ta có thể tạo lại logo bằng Trình tự ANSI này
>>> print["\033[48;5;236m\033[38;5;231mStack \033[38;5;208mAbuse\033[0;0m"]
Kết quả này trong
Đáng kinh ngạc. Thiết bị đầu cuối có thể in những màu nào khác?
Tập lệnh này chứa hai hàm in biến mà bạn chuyển vào chúng, trong Chuỗi thoát ANSI tương ứng. Sau khi chúng tôi chạy tập lệnh và chuyển vào
$ echo $TERM
1 trong một phạm vi nhất định, chẳng hạn như $ echo $TERM
2 cho lược đồ 16 màu hoặc $ echo $TERM
3 cho lược đồ 256 màu, nó sẽ in ra các chỉ số bằng màu ở các giá trị đóĐiều này sẽ in ra cả hai lược đồ được mã hóa màu trong thiết bị đầu cuối
Điều này có thể rất hữu ích như một tài liệu tham khảo nhanh trong khi xây dựng các tiện ích dòng lệnh
Phần kết luận
Trong hướng dẫn này, chúng ta đã tìm hiểu cách in đầu ra có màu, cho các ký tự mà chúng ta gửi đến luồng
$ echo $TERM
4. Chúng tôi đã khám phá cách thực hiện việc này bằng cách sử dụng chức năng tích hợp sẵn mà Python cung cấp, cũng như cách sử dụng thư viện Colorama