Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでターミナル出力に色を付ける方法

ターミナル上でテキストを色付きで表示したい場面はよくあります。Pythonでは、ANSIエスケープシーケンスを直接扱う以外にも、専用ライブラリを使えば簡単に実現できます。ここでは、代表的なライブラリ「termcolor」を使った方法を紹介します。

Pythonモジュールを使う方法

termcolorモジュールとは

termcolorは、ターミナル出力向けのANSIカラーフォーマットを提供する軽量ライブラリです。まずpipでインストールしておきましょう。

pip install termcolor

主な関数は次の2つです。

  • colored(): 色付きの文字列を返します。print()などと組み合わせて使います。
  • cprint(): colored()とprint()を1ステップで行い、直接出力できます。

以下は基本的な使用例です。

import sys
from termcolor import colored, cprint

text1 = colored('Hello, Tutorialspoint!', 'blue', attrs=['reverse', 'blink'])
print(text1)

cprint('Hello, Python!', 'blue', 'on_white')

print_red_on_blue = lambda x: cprint(x, 'red', 'on_blue')
print_red_on_blue('Hello, from Data Science!')
print_red_on_blue('Hello, Python!')

for i in range(10):
    cprint(i, 'green', end=' ')

cprint("Attention!", 'blue', attrs=['bold'], file=sys.stderr)

コードのポイント

  • attrs=['reverse', 'blink'] のように属性を指定すると、反転表示や点滅などの装飾を追加できます(boldunderlineなども利用可能)。
  • 第2引数に 'red'、第3引数に 'on_blue' を指定すると、「青い背景に赤い文字」というように前景色と背景色を組み合わせられます。
  • file=sys.stderr を指定すれば、エラー出力(stderr)に対して色付きメッセージを送ることもできます。

実行結果

Pythonでターミナル出力に色を付ける方法

このコードを実行すると、青色の反転・点滅テキスト、白背景に青文字、青背景に赤文字などが順番に表示され、ループ部分では緑色の数字が横並びに出力されます。

補足:Windows環境ではcoloramaとの併用が便利

古いWindows環境では、ANSIエスケープシーケンスがそのままでは反映されないことがあります。coloramaを併用すると、同じコードがクロスプラットフォームで動作するようになります。

from colorama import init
init()  # WindowsでのANSIカラー出力を有効化

このようにtermcolor(必要に応じてcoloramaも)を使えば、数行のコードで視認性の高いカラフルなコンソール出力を実現でき、ログの強調表示やCLIツールの見た目向上に役立ちます。

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5