وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش چاپ متن رنگی در پایتون

0 374
زمان لازم برای مطالعه: 4 دقیقه


معرفی

برای برنامه های 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 با استفاده از نحو زیر:

نحو 16 رنگ

بیایید این را با چاپ a آزمایش کنیم پنیری الگوی رنگی با الف قرمز متن پررنگ و رنگ زرد زمینه. کد سبک برای نمایش متن پررنگ است 2. کدهای رنگی برای متن قرمز پیش زمینه است 31 و 43 برای پس زمینه زرد بنابراین، با در نظر گرفتن آن، نحو برای نشان دادن این طرح به این صورت است:

print('\033(2;31;43m CHEESY')

دستور بالا را در مفسر پایتون (یا یک فایل) اجرا کنید. این خروجی را خواهید دید:

16 رنگ - مثال 1

این کاملاً درست نیست، متن زیبای ما در حال پخش شدن به خط بعدی است. برای توقف چاپ رنگ ها به یک نقطه تنظیم مجدد نیاز داریم. این را می توان با ضمیمه کردن انجام داد \033(0;0m به رشته به صورت:

print('\033(2;31;43m CHEESY \033(0;0m')

این \033(0;0m کد یک الگوی بازنشانی را نشان می دهد که آن را برمی گرداند terminal بازگشت به طرح رنگ اصلی خود این خروجی زیر را ارائه می دهد:

16 رنگ - مثال 1

به نظر خیلی بهتره

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 رنگ است:

256 رنگ - نحو

یک مکان نگهدارنده برای تعیین اینکه آیا رنگ روی متن یا پس زمینه اعمال می شود وجود دارد. 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید