コード
一応,その他のPackage等ありますが,簡易クラスなら自分でも作成可能なのでメモ書きします.
ちなみにPackageの一つは colorama です.
Color codeはANSIに則って記述されます.
Main code
@shiracamus さんの意見を元にクラス変数を辞書に変更しました.
@shiracamus さんから引数のpython builtin print対応とモジュール化をしてはどうか?という提案がコメントに記載されております.(元内容を維持するために本文はそのまま変更しておりません.)
class pycolor:
COLORS = dict(
BLACK='\033[30m',
RED='\033[31m',
GREEN='\033[32m',
YELLOW='\033[33m',
BLUE='\033[34m',
MAGENTA='\033[35m',
CYAN='\033[36m',
WHITE='\033[37m'
)
END = '\033[0m'
@classmethod
def print_(cls, txt: str, color='red') -> None:
try:
col = cls.COLORS[color.upper()]
print(f'{col}{txt}{cls.END}')
except KeyError:
raise ValueError('color must be in {}, but got {}.'.format(', '.join(cls.COLORS.keys()), color.upper()))
Test code
pycolor.print_('Can you see it?', color='black')
>>> Can you see it? # Black string
pycolor.print_('Failed', color='red')
>>> Failed # Red string
pycolor.print_('OK', color='green')
>>> OK # Green string
pycolor.print_('Warning', color='yellow')
>>> Warning # Yellow string
pycolor.print_('Should be no color', color='block')
>>> ValueError: color must be in ['BLACK', 'RED', 'GREEN', 'YELLOW', 'BLUE', 'MAGENTA', 'CYAN', 'WHITE'], but got block.
その他のColor codes
前述のcoloramaで対応しているcolor codesは以下のとおりです.
ESC [ 0 m # reset all (colors and brightness)
ESC [ 1 m # bright
ESC [ 2 m # dim (looks same as normal brightness)
ESC [ 22 m # normal brightness
# FOREGROUND:
ESC [ 30 m # black
ESC [ 31 m # red
ESC [ 32 m # green
ESC [ 33 m # yellow
ESC [ 34 m # blue
ESC [ 35 m # magenta
ESC [ 36 m # cyan
ESC [ 37 m # white
ESC [ 39 m # reset
# BACKGROUND
ESC [ 40 m # black
ESC [ 41 m # red
ESC [ 42 m # green
ESC [ 43 m # yellow
ESC [ 44 m # blue
ESC [ 45 m # magenta
ESC [ 46 m # cyan
ESC [ 47 m # white
ESC [ 49 m # reset
# cursor positioning
ESC [ y;x H # position cursor at x across, y down
ESC [ y;x f # position cursor at x across, y down
ESC [ n A # move cursor n lines up
ESC [ n B # move cursor n lines down
ESC [ n C # move cursor n characters forward
ESC [ n D # move cursor n characters backward
# clear the screen
ESC [ mode J # clear the screen
# clear the line
ESC [ mode K # clear the line