3256 Stimmen

Wie drucke ich farbigen Text auf dem Terminal in Python?

Wie kann ich in Python farbigen Text auf dem Terminal ausgeben?

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-as‌​cii-codes-with-pytho‌​n

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

27voto

UberJumper Punkte 18655

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:

Farben

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:

#

1 Stimmen

In Windows 10 funktionieren Farben wie unter Linux, wenn Sie os.system('') am Anfang Ihres Codes

24voto

zahanm Punkte 983

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')

2 Stimmen

Dies führt zum Absturz, wenn Sie mehr als ein Positionsargument oder etwas anderes als einen Stringtyp übergeben

0 Stimmen

@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.

1 Stimmen

@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.

24voto

alvas Punkte 104216

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:

Enter image description here


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:

Enter image description here

23voto

Janus Troelsen Punkte 19028

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")

0 Stimmen

Ausprobiert mit Colorama, verwendet print(Style.BRIGHT + "Header Test") et print (Style.DIM + word) um eine wirklich schöne Eingabeaufforderung zu erstellen.

0 Stimmen

Dies muss geändert werden, um Folgendes zu verwenden contextlib für Py3.

0 Stimmen

@cat: Ab welcher Version von Python wird das notwendig sein?

21voto

Giacomo Lacava Punkte 1694

Sie könnten verwenden Clint :

from clint.textui import colored
print colored.red('some warning message')
print colored.green('nicely done!')

1 Stimmen

Der erste Link ist verschwunden, also habe ich ihn entfernt; der GH-Link ist immer noch gut (obwohl das Projekt "archiviert" und im Grunde aufgegeben ist, soweit ich das beurteilen kann).

CodeJaeger.com

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.

Powered by:

X