Python の出力色付きテキスト

Rayven Esplanada 2023年1月30日
  1. ANSI エスケープコードを使って Python でカラーテキストを出力する
  2. Python で色付きテキストを出力するには colorama モジュールを使用する
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}")

出力:

Python カラーテキスト出力

最後の行を出力した後は、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 をインストールする必要があります。この依存関係をインストールするには、pipanaconda を使用することができます。

  • 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)

出力:

Python のカラーテキストを colorma で出力

DIMBRIGHT は、同じ色に使用すると異なる色合いの色を出力します。RESET_ALL はデフォルトの色にリセットして別の色に設定したり、デフォルトの色に戻したりします。

まとめると、Python で色付きのテキストを出力する唯一の方法は ANSI エスケープコードを利用することです。Python の print() 文からの命令をコンソールが理解する唯一の方法です。実際のエスケープコードを print() 内に含めることで手動で行うこともできますし、colorama を使って ANSI コードをより読みやすい形式にラップすることもできます。

ANSI コードの色のオプションをもっと増やしたい場合は、インターネット上に多くのリソースがありますので、この記事を参考にしてください。また、テキストの書式設定(太字、下線、斜体)、コンソールの背景の変更、その他多くのことが ANSI コードでできます。

Rayven Esplanada avatar Rayven Esplanada avatar

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

関連記事 - Python Print