pythonでのCUIプログラミングTips

入力のTips

  • inputで標準入力から文字を入力する場合に、カーソルキー(矢印キー)は扱いが特殊なので注意。環境依存になるが、入力されたカーソルキーをrepr付きで出力(print(repr(x)))してみると、各キーをASCIIコードでどう取得しているかわかる。
  • Linux(Ubuntu)だと、上矢印が\x1b[Aのようになる。16新で1b,[は制御文字、でAみたいな意味合い。CUIアプリとしてはとりあえずそれを使えば良い。
x = input
if x == '\x1b[A':
    # Up
elif x == '\x1b[B':
    # Down
elif x == '\x1b[C':
    # Right
elif x == '\x1b[D':
    # Left    

出力のTips

  • 標準出力に色付き文字で出力したい場合がある。
  • Bashのターミナルへの色付き文字のやり方と同じで、対象の文字をASCII制御コードで囲ってやれば良い。
  • 例えば、hogeを赤くする場合、赤=\033[31mと、終了コード(END)=\033[\0mで囲う。
  • こんなモジュールを用意しておくと便利。
# coloring.py
END = '\033[0m'
colors = {'BLACK': '\033[30m',
          'RED': '\033[31m',
          'GREEN': '\033[32m',
          'YELLOW': '\033[33m',
          'BLUE': '\033[34m',
          'PURPLE': '\033[35m',
          'CYAN': '\033[36m',
          'WHITE': '\033[37m',
          'BOLD': '\033[38m'}


def coloring(str, color):
    if color in colors:
        return colors[color] + str + END
    else:
        return colors['RED'] + 'Given color does NOT exist.' + END


if __name__ == '__main__':
    s = 'hello'
    print(coloring(s, 'RED'))
    print(coloring(s, 'BLUE'))
    print(coloring(s, 'GRAY'))