از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش چاپ متن رنگی در پایتون
سرفصلهای مطلب
معرفی
برای برنامه های CLI معمول است که متن را به همان رنگ برگردانند terminal. همیشه مواردی وجود دارد که می خواهیم خروجی را برای کاربر برجسته کنیم، مثلاً یک پیام هشدار یا خطا. در این موارد، یک خط تیره رنگ می تواند تفاوت ایجاد کند.
این مقاله به شما نشان می دهد چگونه print خروجی رنگی در terminal در پایتون با و بدون کتابخانه
دنباله های فرار ANSI
شما دستگاه تله تایپ (TTY)، یا بهتر است بگوییم شما terminal، نه تنها قادر به نمایش خروجی یک برنامه است. این می تواند یک مکان نما متحرک را نمایش دهد، متن را رنگی کند، کل صفحه را پاک کند و خیلی بیشتر از خروجی استاتیک. شاید دیده باشید command-line ابزارهای کاربردی با متن رنگارنگ و نوارهای پیشرفت. چگونه نمایش داده هایی را که به آنها خروجی می دهیم کنترل کنیم terminal?
ما استفاده می کنیم ANSI Escape Sequences/Codes. اینها رشته های خاصی هستند که رفتار را تغییر می دهند terminal. یک مثال آشنا خواهد بود \n
شخصیت، که یک خط جدید توالی. وارد کردن این کاراکتر خواهد شد print یک خط جدید در خروجی
متن رنگی است روی شما terminal مستقر روی دنباله های ANSI Escape. این مقاله تمرکز دارد روی دنباله های فرار به رنگ متن.
دو طرح رنگی به طور گسترده در پایانه ها استفاده می شود:
- 16 رنگ (8 پس زمینه + 8 پیش زمینه)
- 256 رنگ
بیایید رنگ کردن خروجی خود را با گزینه 16 رنگ شروع کنیم.
16 رنگ در پایتون خام
طرح 16 رنگ شامل دو مجموعه 8 رنگی هر کدام (8 پس زمینه و 8 پیش زمینه) است و می توان آنها را در terminal با استفاده از نحو زیر:
بیایید این را با چاپ a آزمایش کنیم پنیری الگوی رنگی با الف قرمز متن پررنگ و رنگ زرد زمینه. کد سبک برای نمایش متن پررنگ است 2
. کدهای رنگی برای متن قرمز پیش زمینه است 31
و 43
برای پس زمینه زرد بنابراین، با در نظر گرفتن آن، نحو برای نشان دادن این طرح به این صورت است:
print('\033(2;31;43m CHEESY')
دستور بالا را در مفسر پایتون (یا یک فایل) اجرا کنید. این خروجی را خواهید دید:
این کاملاً درست نیست، متن زیبای ما در حال پخش شدن به خط بعدی است. برای توقف چاپ رنگ ها به یک نقطه تنظیم مجدد نیاز داریم. این را می توان با ضمیمه کردن انجام داد \033(0;0m
به رشته به صورت:
print('\033(2;31;43m CHEESY \033(0;0m')
این \033(0;0m
کد یک الگوی بازنشانی را نشان می دهد که آن را برمی گرداند terminal بازگشت به طرح رنگ اصلی خود این خروجی زیر را ارائه می دهد:
به نظر خیلی بهتره
16 رنگ در Colorama – یک ماژول داخلی
Colorama یک بسته پایتون است که متدهایی را ارائه می دهد print متن رنگی در پایتون این فقط از طرح 16 رنگ پشتیبانی می کند. ماژول توالی های فرار ANSI را برای تولید متن رنگی آماده می کند. بیایید ماژول را با pip
:
$ pip install colorama
توصیه می کنیم آن را در یک محیط مجازی نصب کنید. پس از تنظیم ، بیایید به چاپ متن رنگی با Colorama:
from colorama import init, Fore, Back, Style
init(autoreset=True)
print(Style.BRIGHT + Back.YELLOW + Fore.RED + "CHEESY")
ما اول import توابع: init()
(برای مقداردهی اولیه ماژول و تنظیم autoreset
به True
بنابراین ما مجبور نیستیم آن را به صورت دستی تنظیم مجدد کنیم)، Fore
(ابژه متن پیش زمینه)، Back
(پس زمینه شی) و Style
(Style Object). هر شیء مجموعه ای از ثابت های خاص خود را دارد که می توان در آن نامید print()
تابع.
با افزودن این مؤلفه ها به روشی دوستانه انسان ، Colorama مقادیر مانند را تبدیل می کند YELLOW
به 43
، برای Back
هدف – شی، RED
به 31
برای Fore
شی، و غیره. در زیر کاپوت، ما با یک دنباله ANSI مواجه می شویم، درست مانند دفعه قبل، هرچند، لازم نیست خودمان کدها را بدانیم – Colorama این کار را برای ما انجام می دهد.
هیچ الگوی تنظیم مجدد لازم نیست ، زیرا ما تنظیم کرده ایم autoreset
استدلال به True
در حین مقداردهی اولیه نمونه
با اجرای کد به صورت زیر نمایش داده می شود:
256 رنگ در پایتون خام
با پیشرفت در فن آوری ها ، طرح 256 رنگ متداول ترین در پایانه ها است. اگر شما روی یک سیستم عامل مبتنی بر لینوکس، می توانید سیستم خود را بررسی کنید terminalطرح رنگی پشتیبانی شده با وارد کردن دستور زیر:
$ echo $TERM
اگر این دستور برگردد xterm-256color
، سپس شما terminal حداکثر 256 رنگ را پشتیبانی می کند.
تعجب می کنید که آن رنگ ها چیست؟
ما می توانیم بلافاصله بعد از درک نحو یک طرح 256 رنگ شیرجه بزنیم. کار با 256 رنگ کمی متفاوت از کار با طرح 16 رنگ است:
یک مکان نگهدارنده برای تعیین اینکه آیا رنگ روی متن یا پس زمینه اعمال می شود وجود دارد. 38;5; برای متن و 48;5; برای پس زمینه است پس از آن کد رنگی در محدوده از 0 به 255.
مستقر روی نحو بالا، بیایید سعی کنیم آن را دوباره ایجاد کنیم rasanegar لوگو در پایتون با استفاده از ANSI Escape Sequence.
لوگو حاوی پس زمینه خاکستری کم رنگ است (\033(48;5;236m
) با عبارت: پشته در رنگ سفید (\033(38;5;231m
) و سو استفاده کردن به رنگ نارنجی (\033(38;5;208m
). و البته، کد بازنشانی باید در رشته جاسازی شود.
همانطور که گفته شد، ما می توانیم لوگو را با این دنباله ANSI بازسازی کنیم:
>>> print("\033(48;5;236m\033(38;5;231mStack \033(38;5;208mAbuse\033(0;0m")
این نتیجه در:
عالی! چه رنگ های دیگری می تواند terminal print? بیایید نگاهی بیندازیم، با چاپ تمام 256 رنگ پشتیبانی شده توسط terminal:
def colors_16(color_):
return("\033(2;{num}m {num} \033(0;0m".format(num=str(color_)))
def colors_256(color_):
num1 = str(color_)
num2 = str(color_).ljust(3, ' ')
if color_ % 16 == 0:
return(f"\033(38;5;{num1}m {num2} \033(0;0m\n")
else:
return(f"\033(38;5;{num1}m {num2} \033(0;0m")
print("The 16 colors scheme is:")
print(' '.join((colors_16(x) for x in range(30, 38))))
print("\nThe 256 colors scheme is:")
print(' '.join((colors_256(x) for x in range(256))))
این اسکریپت شامل دو تابع است که print متغیری که در ANSI Escape Sequences مربوطه به آنها می دهید. زمانی که اسکریپت را اجرا می کنیم و وارد می شویم x
در یک محدوده خاص، مانند (30,38)
برای طرح 16 رنگ، یا (0-255)
برای طرح 256 رنگ، این کار را انجام خواهد داد print شاخص های موجود در رنگ ها را در آن مقادیر مشخص کنید.
این اراده print هر دو طرح رنگی را در terminal:
این می تواند به عنوان یک مرجع سریع در هنگام ساخت بسیار مفید باشد command-line خدمات رفاهی.
نتیجه
در این آموزش به روش انجام این کار پرداخته ایم print خروجی رنگی، برای کاراکترهایی که به آنها می فرستیم stdout
جریان ما روش انجام این کار را با استفاده از عملکرد داخلی ارائه شده پایتون و همچنین روش استفاده از کتابخانه Colorama را بررسی کرده ایم.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-11 17:59:05