PythonとANSIエスケープシーケンス
プログラミングで標準出力に色をつける例
「Python」でもできるのでは? 👉 仕組みを調べたものメモ
Djangoのコマンドでself.stdout.write(self.style.SUCCESS(message))のように書ける
django.utils.termcolors.colorize
'\x1b[%sm'をフォーマットする実装
\033[%dm%sをフォーマットする実装
最近の例だとrich
rich.style.Styleのrenderメソッド
f"\x1b[{attrs}m{text}\x1b[0m"
感想 rich.color.Colorで見た__rich__を定義した実装、興味深い(Adapterパターンと思われる)※積ん読
確認
\033(0始まりは8進)は、10進で27(int("33", 8))
\x1b(16進)は、10進で27(int("1b", 16))
chr(27)はエスケープ('\x1b'が返った)
code:python
>> print("\033[32mhello\033[0m world")
hello world
>> print("\x1b[32mhello\x1b[0m world")
hello world