[PYTHON] Wrapper, wenn Sie utf-8 + ansi color in der Windows-Konsole ausgeben möchten

#!/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, wenn Sie utf-8 + ansi color in der Windows-Konsole ausgeben möchten
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Ich möchte kühl auf die Konsole ausgeben
Wenn Sie NumPy, Pandas, Matplotlib, IPython, SciPy unter Windows verwenden möchten
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Ich möchte pyenv + pipenv auch unter Windows machen
Was tun, wenn Sie Dateien remote von einem Windows-Client empfangen möchten?
Wenn Sie beim Erstellen von Pycocoapi unter Windows nicht weiterkommen
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Ausgabeprotokoll an die Konsole mit Flask + Nginx auf Docker
Wenn Sie mit dem Django REST-Framework filtern möchten
Wenn Sie in der for-Anweisung plt.save möchten
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
[AWS] Was tun, wenn Sie mit Lambda pfeifen möchten?
Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten
Wenn Sie die Anfangsdaten von Django mit Relationen registrieren möchten
[AWS EC2] Einstellungen, die Sie unter Amazon Linux 2 vornehmen möchten
Wenn Sie möchten, dass das Thema Ihrer Sphinx-Dokumentation dasselbe ist
Ich möchte wissen, ob Sie Python auf Mac ・ Iroha installieren
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Wenn Sie diff in Python ausführen und sowohl Rückkehrcode als auch Ausgabe wünschen
Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
Wenn Sie eine mehrdimensionale Liste nach mehreren Zeilen sortieren möchten
Wenn Sie das Intervall der Achsenskala mit APLpy anpassen möchten