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ライブラリはプロダクションアプリケーション向けの高レベル抽象化を提供します。

試してみる — ANSI Color Code Reference

フルツールを開く