Die übliche Regel für Apps, die Konsolenfarben unterstützen, besteht darin, sie zu aktivieren, wenn die aktuelle Konsole ein TTY ist.Wie erkennt man eine Pseudokonsole in Python, um die Farbgebung zu aktivieren?
Diese Methode bricht auf Servern mit kontinuierlicher Integration (wie Jenkins, Travis, ...), weil sie kein TTY für ihre Pseudokonsole öffnen.
Ich frage mich, ob es möglich ist, zwischen diesen beiden Fällen zu unterscheiden:
mycommand
Lauf unter Jenkins - wir Färbungmycommand >> output.log
aktivieren wollen - wir wollen nicht mit ANSI am Ende Escapes in der Protokolldatei.
Mein alter ANSI Erkennungscode:
import sys
import os
if (hasattr(sys.stderr, "isatty") and sys.stderr.isatty()) or \
('TERM' in os.environ.keys() and os.environ['TERM'] in ['linux']) or \
('PYCHARM_HOSTED' in os.environ.keys()):
coloring = True
Kann ich verbessern dies, um dieses Problem zu lösen?