[PYTHON] Wrapper lorsque vous souhaitez afficher la couleur utf-8 + ansi dans la console Windows

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import subprocess

reload(sys) 
sys.setdefaultencoding("utf-16")

HAS_COLORAMA = True

try:
  import colorama
  colorama.init()
except:
  HAS_COLORAMA = False

p = subprocess.Popen(sys.argv[1:], stdout=subprocess.PIPE)

def decode_ansi(s):
  assert s[0] == '[', "string does not start with control sequence"
  for i in range(1, len(s)):
    if s[i] == 'm':
      break

  return s[i+1:], s[1:i].split(';')

for line in p.stdout:
  substrs = line.split(chr(27))
  sys.stdout.write(substrs[0].decode('utf-8'))
  for s in substrs[1:]:
    s, cs = decode_ansi(s)
    if HAS_COLORAMA:
      sys.stdout.write("\033[%sm" % ';'.join(cs))
    sys.stdout.write(s.decode('utf-8'))

Recommended Posts

Wrapper lorsque vous souhaitez afficher la couleur utf-8 + ansi dans la console Windows
Lorsque vous souhaitez utiliser python 2.x sur Gentoo Linux moderne
Lorsque vous souhaitez lancer une commande UNIX sur Python
Je veux sortir froidement sur la console
Si vous souhaitez utiliser NumPy, Pandas, Matplotlib, IPython, SciPy sous Windows
Lorsque vous souhaitez mettre à jour le pilote Chrome.
Je veux faire pyenv + pipenv même sous Windows
Que faire lorsque vous souhaitez recevoir des fichiers à distance depuis un client Windows
Si vous êtes bloqué lors de la construction de pycocoapi sous Windows
Paramètres lorsque vous souhaitez exécuter python-mecab avec travis
Journal de sortie vers la console avec Flask + Nginx sur Docker
Lorsque vous souhaitez filtrer avec le framework Django REST
Lorsque vous voulez plt.save dans l'instruction for
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
[AWS] Que faire lorsque vous souhaitez piper avec Lambda
Utilisez aggdraw lorsque vous voulez dessiner magnifiquement avec un oreiller
Lorsque vous souhaitez enregistrer les données initiales de Django avec des relations
[AWS EC2] Paramètres que vous souhaitez effectuer sur Amazon Linux 2
Lorsque vous souhaitez que le thème de votre documentation Sphinx soit le même
Je veux savoir si vous installez Python sur Mac ・ Iroha
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Lorsque vous exécutez diff en python et que vous voulez à la fois le code de retour et la sortie
Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Lorsque vous souhaitez trier une liste multidimensionnelle sur plusieurs lignes
Lorsque vous souhaitez ajuster l'intervalle de l'échelle de l'axe avec APLpy