Python の出力色付きテキスト
このチュートリアルでは、Python で出力する際に色付きのテキストを生成する方法を紹介します。
入力を使用してコマンドラインコンソールを操作する唯一の方法は、ANSI エスケープコードを使用することです。これらのコードは、テキストや背景色、カーソルの設定、フォント、その他コンソール内で変更可能な要素などのコンソール関数を操作することができます。
ANSI エスケープコードを使って Python でカラーテキストを出力する
まず、Python クラスを宣言してみましょう。
class bcolors:
OK = "\033[92m" # GREEN
WARNING = "\033[93m" # YELLOW
FAIL = "\033[91m" # RED
RESET = "\033[0m" # RESET COLOR
これらの変数のうち 3つは実際の色を表す ANSI コードであり、変数 RESET は色をデフォルトに戻すためのものです。
関数 print() は引数の文字列をコマンドラインコンソールに出力します。
print() の出力に色をつけたい場合は、コマンドラインコンソールを操作できる ANSI コードを文字列の中に挿入する必要があります。
クラス bcolors を用いて、3つの異なる色の行を出力します。
print(bcolors.OK + "File Saved Successfully!" + bcolors.RESET)
print(bcolors.WARNING + "Warning: Are you sure you want to continue?" + bcolors.RESET)
print(bcolors.FAIL + "Unable to delete record." + bcolors.RESET)
文字列の前に反映させたい色を付け、bcolors.RESET で文字列を拡張して、次に print() を使用するときやターミナルを使用するときに色をデフォルトにリセットします。
Python 3 を使用している場合は、print() 文を以下のようにフォーマットすることもできます。
print(f"{bcolors.OK}File Saved Successfully!{bcolors.RESET}")
print(f"{bcolors.WARNING}Warning: Are you sure you want to continue?{bcolors.RESET}")
print(f"{bcolors.FAIL}Unable to delete record.{bcolors.RESET}")
出力:

最後の行を出力した後は、bcolors.RESET によりターミナルはデフォルトの色にリセットされます。これを行末に置かなかった場合、ターミナル内のテキストは print() で設定した最後の色になります。この場合、赤になります。
Python で色付きテキストを出力するには colorama モジュールを使用する
ANSI の問題は Windows OS ではうまく動作しない可能性があるので、Windows コンソール内で動作させるには回避策が必要になります。
colorama は、ANSI のエスケープコードを利用した Python モジュールです。このモジュールは ANSI を Windows と互換性を持たせることも可能にしています。ドキュメントには、どのようにして Windows 互換の ANSI コードをラップすることを可能にしたのかが説明されています。
ここに利用可能な colorama の前景色の色のリストがあります。
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET
また、現在の ANSI の変更をすべてリセットする RESET_ALL などのスタイルもありますが、Fore.RESET は最新の ANSI のみをリセットします。
DIM, NORMAL, BRIGHT, RESET_ALL
まず、コミュニティが作成したライブラリである colorama をインストールする必要があります。この依存関係をインストールするには、pip か anaconda を使用することができます。
pipまたはpip3の場合
pip install colorama
pip3 install colorama //if you're using python3
anacondaの場合
conda install -c anaconda colorama
いくつかの色を試してみて、異なる色やスタイルを数行出力してみます。これらの設定を Windows で動作させるために colorama.init() を使用します。
import colorama
from colorama import Fore
from colorama import Style
colorama.init()
print(Fore.BLUE + Style.BRIGHT + "This is the color of the sky" + Style.RESET_ALL)
print(Fore.GREEN + "This is the color of grass" + Style.RESET_ALL)
print(Fore.BLUE + Style.DIM + "This is a dimmer version of the sky" + Style.RESET_ALL)
print(Fore.YELLOW + "This is the color of the sun" + Style.RESET_ALL)
出力:

DIM と BRIGHT は、同じ色に使用すると異なる色合いの色を出力します。RESET_ALL はデフォルトの色にリセットして別の色に設定したり、デフォルトの色に戻したりします。
まとめると、Python で色付きのテキストを出力する唯一の方法は ANSI エスケープコードを利用することです。Python の print() 文からの命令をコンソールが理解する唯一の方法です。実際のエスケープコードを print() 内に含めることで手動で行うこともできますし、colorama を使って ANSI コードをより読みやすい形式にラップすることもできます。
ANSI コードの色のオプションをもっと増やしたい場合は、インターネット上に多くのリソースがありますので、この記事を参考にしてください。また、テキストの書式設定(太字、下線、斜体)、コンソールの背景の変更、その他多くのことが ANSI コードでできます。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn