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