PythonのANSIカラー - printでターミナルカラー出力
ANSIエスケープコードを使用してPythonでカラーテキストを表示。生のエスケープシーケンス、coloramaライブラリ、richライブラリによるクロスプラットフォームターミナルカラーサポートをカバー。
Language Examples
詳細な説明
Pythonでのカラーターミナル出力
PythonはANSIエスケープシーケンスをprint文でネイティブにサポートしています。このガイドでは生のエスケープコードと人気のライブラリアプローチの両方をカバーします。
生のANSIエスケープシーケンス
# 基本色
print("\033[31m赤いテキスト\033[0m")
print("\033[1;32m太字緑\033[0m")
print("\033[4;34m下線付き青\033[0m")
# 256色
print("\033[38;5;208mオレンジテキスト\033[0m")
# トゥルーカラー
print("\033[38;2;255;165;0mトゥルーオレンジ\033[0m")
カラー定数クラス
class Color:
RED = "\033[31m"
GREEN = "\033[32m"
YELLOW = "\033[33m"
BLUE = "\033[34m"
MAGENTA = "\033[35m"
CYAN = "\033[36m"
BOLD = "\033[1m"
DIM = "\033[2m"
UNDERLINE = "\033[4m"
RESET = "\033[0m"
@staticmethod
def rgb(r, g, b):
return f"\033[38;2;{r};{g};{b}m"
@staticmethod
def bg_rgb(r, g, b):
return f"\033[48;2;{r};{g};{b}m"
# 使い方
print(f"{Color.RED}エラー: ファイルが見つかりません{Color.RESET}")
print(f"{Color.BOLD}{Color.GREEN}成功!{Color.RESET}")
print(f"{Color.rgb(255, 165, 0)}カスタムオレンジ{Color.RESET}")
f-stringでのカラー使用
def colored(text, code):
return f"\033[{code}m{text}\033[0m"
# セマンティックヘルパー
def error(msg): return colored(msg, "1;31")
def success(msg): return colored(msg, "1;32")
def warning(msg): return colored(msg, "1;33")
def info(msg): return colored(msg, "1;36")
print(error("ビルド失敗"))
print(success("42のテストすべてに合格"))
print(warning("非推奨APIの使用"))
Windows互換性
WindowsではANSIエスケープコードにVirtual Terminal Processingの有効化が必要:
import os
import sys
# Windows 10+でANSIを有効化
if sys.platform == "win32":
os.system("") # ANSI サポートを有効にする簡単なトリック
# またはcoloramaを使用してより広いWindowsサポート
# pip install colorama
# from colorama import init
# init()
条件付きカラー
import sys
USE_COLOR = sys.stdout.isatty() and os.environ.get("NO_COLOR") is None
def maybe_color(text, code):
if USE_COLOR:
return f"\033[{code}m{text}\033[0m"
return text
ユースケース
Python開発者はargparseやclickで構築されたCLIツール、pytestのようなテストフレームワーク(合格は緑、失敗は赤)、進捗を表示するデータ処理スクリプト、ステータスを表示するWebスクレイピングツール、DevOps自動化スクリプトでカラーターミナル出力を使用します。coloramaやrichライブラリはプロダクションアプリケーション向けの高レベル抽象化を提供します。