Python でターミナル出力に色を追加する
Python は、ターミナル出力の読みやすさと外観を向上させるさまざまな方法を提供します。効果的な方法の 1 つは、色付きのテキストを使用することです。これにより、重要な情報を強調したり、さまざまな種類のデータを区別したりできます。
このガイドでは、端末に色付きのテキストを印刷するために Python で利用できるさまざまなテクニックとライブラリを検討します。初心者でも経験豊富な開発者でも、これらの方法は、より視覚的に魅力的なコマンド ライン アプリケーションを作成するのに役立ちます。
指示 | 説明 |
---|---|
\033[91m | 赤色のテキスト色の ANSI エスケープ コード。 |
\033[0m | テキストの書式設定をリセットするための ANSI エスケープ コード。 |
colorama.init(autoreset=True) | colorama を初期化し、各印刷後に色を自動的にリセットするように設定します。 |
colorama.Fore.RED | 赤いテキストの色を表す Colorama 定数。 |
colorama.Style.RESET_ALL | すべてのテキスト書式をリセットする Colorama 定数。 |
color_map.get(color, Fore.WHITE) | color_map ディクショナリから指定された色を取得します。色が見つからない場合はデフォルトで白になります。 |
Python ターミナルのテキストの色付けテクニックを理解する
最初のスクリプトでは、 ANSI escape codes 端末で色付きのテキストを印刷します。これらのエスケープ コードは、端末がテキストの外観を変更するコマンドとして解釈する一連の文字です。例えば、 \033[91m テキストの色が赤に変わります。 \033[0m テキストの書式設定をリセットします。スクリプトは関数を定義します。 print_colored、これは 2 つの引数を取ります: 印刷するテキストと希望の色です。関数内では、辞書が色の名前を対応する ANSI コードにマップします。テキストは、適切なカラー コードとリセット コードを含む f 文字列を使用して印刷されます。
2 番目のスクリプトでは、 colorama ライブラリ。クロスプラットフォームのカラーテキスト出力を簡素化します。ライブラリは次のように初期化されます colorama.init(autoreset=True)、各 print ステートメントの後にテキストの書式設定がリセットされるようにします。の print_colored このスクリプトの関数は、引数としてテキストと色も受け取ります。辞書は色の名前を次のようにマッピングします。 colorama.Fore 定数など Fore.RED。テキストは、色定数とテキストを組み合わせた f 文字列を使用して印刷されます。 Style.RESET_ALL 書式設定をリセットする定数。これらのスクリプトは、端末出力に色を追加し、読みやすさとユーザー エクスペリエンスを向上させるための 2 つの効果的な方法を示しています。
Python でのカラーテキストの ANSI エスケープ コードの使用
ANSI エスケープ コードを使用した Python スクリプト
def print_colored(text, color):
color_codes = {
"red": "\033[91m",
"green": "\033[92m",
"yellow": "\033[93m",
"blue": "\033[94m",
"magenta": "\033[95m",
"cyan": "\033[96m",
"white": "\033[97m",
}
reset_code = "\033[0m"
print(f"{color_codes.get(color, color_codes['white'])}{text}{reset_code}")
端末のテキストの色付けに「colorama」ライブラリを活用する
「colorama」ライブラリを使用した Python スクリプト
from colorama import init, Fore, Style
init(autoreset=True)
def print_colored(text, color):
color_map = {
"red": Fore.RED,
"green": Fore.GREEN,
"yellow": Fore.YELLOW,
"blue": Fore.BLUE,
"magenta": Fore.MAGENTA,
"cyan": Fore.CYAN,
"white": Fore.WHITE,
}
print(f"{color_map.get(color, Fore.WHITE)}{text}{Style.RESET_ALL}")
Python でカラー テキスト用の追加ライブラリを探索する
使用を超えて ANSI escape codes そしてその colorama ライブラリ、Python のカラー テキスト用のもう 1 つの強力なライブラリは次のとおりです。 termcolor。このライブラリは、端末でカラー テキストを印刷するための簡単な API を提供します。太字、下線、背景色などのさまざまなテキスト属性をサポートします。使用するには termcolor、まず pip を使用してインストールする必要があります。インストールすると、その機能を使用できるようになります colored そして cprint 機能。の colored 関数は適切なエスケープ シーケンスを含む文字列を返します。 cprint テキストを端末に直接出力します。
もう 1 つの便利なライブラリは、 rich、色付きのテキストをサポートするだけでなく、表、マークダウンのレンダリング、構文の強調表示などの高度な書式設定も可能になります。これにより、視覚的に魅力的なコマンド ライン アプリケーションを作成するための多用途ツールになります。使用するには rich、pip経由でインストールし、それを利用します print 強化されたテキスト書式設定のための関数。これらのライブラリにより、端末テキストのスタイル設定のオプションが拡張され、より魅力的でユーザーフレンドリーな CLI ツールを作成できるようになります。
Python のカラーテキストに関するよくある質問
- termcolor ライブラリをインストールするにはどうすればよいですか?
- コマンドを使用して termcolor ライブラリをインストールできます。 pip install termcolor。
- colorama と termcolor はどう違いますか?
- どちらのライブラリも端末内の色付きテキストに使用されますが、 colorama はクロスプラットフォーム互換性により重点を置いていますが、 termcolor は、色およびテキスト属性のためのより簡単な API を提供します。
- 同じスクリプトで colorama と termcolor の両方を使用できますか?
- はい、両方の機能が必要な場合は、同じスクリプトで両方のライブラリを使用できます。必ず初期化して正しく使用してください。
- termcolor を使用して太字のテキストを印刷するにはどうすればよいですか?
- の属性パラメータを使用すると、太字のテキストを印刷できます。 colored 関数、例: colored('Hello, World!', 'red', attrs=['bold'])。
- 端末内の文字の背景に色を付けることはできますか?
- はい、両方とも colorama そして termcolor 背景色をサポートします。で colorama、次のような定数を使用できます Back.RED、そして termcolorを使用できます。 on_color パラメータ。
- リッチでテキストの書式設定をリセットするにはどうすればよいですか?
- の中に rich ライブラリの場合、テキストの書式設定は、次のように、print 関数呼び出しの終了時に自動的にリセットされます。 colorama's オートリセット機能。
- これらのライブラリを使用してログ ファイル内のテキストをフォーマットできますか?
- これらのライブラリは主に端末出力用に設計されています。ログ ファイル内のテキストを書式設定するには、カラー サポートを備えたログ ライブラリを使用するか、ログ ビューアがサポートしている場合は ANSI コードを手動で追加する必要がある場合があります。
- 高度な端末フォーマット用の他のライブラリにはどのようなものがありますか?
- その上 colorama、 termcolor、 そして rich、次のようなライブラリを探索できます。 blessed そして texttable 高度な端末フォーマット オプションの場合。
Python ターミナルのテキストの色付けに関する最終的な考え
Python ターミナルでカラー テキストを使用することは、コマンド ライン アプリケーションの明瞭さと魅力を向上させる強力な方法です。 ANSI エスケープ コードや colorama、termcolor、rich などのライブラリを利用することで、開発者は出力に色やテキスト属性を簡単に追加できます。これらの技術は、端末出力をより視覚的に魅力的なものにするだけでなく、重要な情報を強調表示し、全体的なユーザー インタラクションを向上させるのにも役立ちます。