Wie kann ich in Python farbigen Text auf dem Terminal ausgeben?
In Windows 10 funktionieren Farben wie unter Linux, wenn Sie os.system('')
am Anfang Ihres Codes
Wie kann ich in Python farbigen Text auf dem Terminal ausgeben?
Unter Windows können Sie nicht mit Farben auf der Konsole drucken, es sei denn, Sie verwenden die Win32 API.
Unter Linux ist es so einfach wie die Verwendung von print, mit den hier beschriebenen Escape-Sequenzen:
Ob das Zeichen wie ein Kasten gedruckt wird, hängt davon ab, welche Schriftart Sie für das Konsolenfenster verwenden. Das Pfund-Symbol funktioniert gut, aber es hängt von der Schriftart ab:
#
Dumm und einfach, basierend auf joelds Antwort :
class PrintInColor:
RED = '\033[91m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
LIGHT_PURPLE = '\033[94m'
PURPLE = '\033[95m'
END = '\033[0m'
@classmethod
def red(cls, s, **kwargs):
print(cls.RED + s + cls.END, **kwargs)
@classmethod
def green(cls, s, **kwargs):
print(cls.GREEN + s + cls.END, **kwargs)
@classmethod
def yellow(cls, s, **kwargs):
print(cls.YELLOW + s + cls.END, **kwargs)
@classmethod
def lightPurple(cls, s, **kwargs):
print(cls.LIGHT_PURPLE + s + cls.END, **kwargs)
@classmethod
def purple(cls, s, **kwargs):
print(cls.PURPLE + s + cls.END, **kwargs)
Dann einfach
PrintInColor.red('hello', end=' ')
PrintInColor.green('world')
Dies führt zum Absturz, wenn Sie mehr als ein Positionsargument oder etwas anderes als einen Stringtyp übergeben
@RomainVincent Dann geben Sie nicht mehr als ein Positionsargument oder irgendetwas anderes als eine Zeichenkette ty- Moment, das sind print
-Ergänzungen ? Der Einspruch wird zurückgenommen.
@wizzwizz4 Ich bin mir nicht sicher, was du mit diesem Kommentar gemeint hast, ich sehe den Sinn sowieso nicht. Wenn man eine Klasse... vorschlägt, um eine so einfache Methode wie print zu ersetzen, kann man es genauso gut vermeiden, sie so leicht zerstörbar zu machen. Nur meine Meinung.
Aufbauend auf joelds Antwort , mit https://pypi.python.org/pypi/lazyme
pip install -U lazyme
:
from lazyme.string import color_print
>>> color_print('abc')
abc
>>> color_print('abc', color='pink')
abc
>>> color_print('abc', color='red')
abc
>>> color_print('abc', color='yellow')
abc
>>> color_print('abc', color='green')
abc
>>> color_print('abc', color='blue', underline=True)
abc
>>> color_print('abc', color='blue', underline=True, bold=True)
abc
>>> color_print('abc', color='pink', underline=True, bold=True)
abc
Bildschirmfoto:
Einige Aktualisierungen der color_print
mit neuen Formatierern, z.B.:
>>> from lazyme.string import palette, highlighter, formatter
>>> from lazyme.string import color_print
>>> palette.keys() # Available colors.
['pink', 'yellow', 'cyan', 'magenta', 'blue', 'gray', 'default', 'black', 'green', 'white', 'red']
>>> highlighter.keys() # Available highlights.
['blue', 'pink', 'gray', 'black', 'yellow', 'cyan', 'green', 'magenta', 'white', 'red']
>>> formatter.keys() # Available formatter,
['hide', 'bold', 'italic', 'default', 'fast_blinking', 'faint', 'strikethrough', 'underline', 'blinking', 'reverse']
Note : italic
, fast blinking
y strikethrough
funktionieren möglicherweise nicht auf allen Terminals, und sie funktionieren nicht auf Mac und Ubuntu.
Z.B.,
>>> color_print('foo bar', color='pink', highlight='white')
foo bar
>>> color_print('foo bar', color='pink', highlight='white', reverse=True)
foo bar
>>> color_print('foo bar', color='pink', highlight='white', bold=True)
foo bar
>>> color_print('foo bar', color='pink', highlight='white', faint=True)
foo bar
>>> color_print('foo bar', color='pink', highlight='white', faint=True, reverse=True)
foo bar
>>> color_print('foo bar', color='pink', highlight='white', underline=True, reverse=True)
foo bar
Bildschirmfoto:
Beachten Sie, wie gut die with
Schlüsselwort mischt sich mit Modifikatoren wie diesen, die zurückgesetzt werden müssen (mit Python 3 und Colorama):
from colorama import Fore, Style
import sys
class Highlight:
def __init__(self, clazz, color):
self.color = color
self.clazz = clazz
def __enter__(self):
print(self.color, end="")
def __exit__(self, type, value, traceback):
if self.clazz == Fore:
print(Fore.RESET, end="")
else:
assert self.clazz == Style
print(Style.RESET_ALL, end="")
sys.stdout.flush()
with Highlight(Fore, Fore.GREEN):
print("this is highlighted")
print("this is not")
Ausprobiert mit Colorama, verwendet print(Style.BRIGHT + "Header Test")
et print (Style.DIM + word)
um eine wirklich schöne Eingabeaufforderung zu erstellen.
Sie könnten verwenden Clint :
from clint.textui import colored
print colored.red('some warning message')
print colored.green('nicely done!')
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
1 Stimmen
Dieses Symbol eignet sich hervorragend für einen farbigen Block: Das einzige Problem ist, dass es sich um erweitertes ASCII handelt, vielleicht kann man es mit
http://stackoverflow.com/questions/8465226/using-extended-ascii-codes-with-python
1 Stimmen
Einige Terminals können auch Unicode-Zeichen anzeigen. Wenn dies auf Ihr Terminal zutrifft, sind die möglichen Zeichen fast unbegrenzt.
9 Stimmen
Diese Antwort kam ziemlich spät, aber sie scheint mir die beste zu sein... die anderen Antworten erfordern spezielle Hacks für Windows, während diese Antwort einfach funktioniert: stackoverflow.com/a/3332860/901641
0 Stimmen
Wie wäre es mit stackoverflow.com/a/42528796/610569 mit pypi.python.org/pypi/lazyme ? (Haftungsausschluss: schamlose Werbung)
0 Stimmen
Wenn Sie kein zusätzliches Paket installieren möchten, gehen Sie folgendermaßen vor neue Antwort .