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

7voto

Edgardo Obregón Punkte 419

Ich schlage diese neue Bibliothek vor Printy . Sie haben gerade Version 1.2.0 als plattformübergreifende Bibliothek veröffentlicht.

Sehen Sie sich das an: Printy auf GitHub

Es basiert auf Flaggen, so dass man Dinge tun kann wie

from printy import printy

# With global flags, this will apply a bold (B) red (r) color and an underline (U) to the whole text
printy("Hello, World!", "rBU")

# With inline formats, this will apply a dim (D)
#blue (b) to the word 'Hello' and a stroken (S)
#yellow (y) to the word 'world', and the rest will remain as the predefined format
printy("this is a [bD]Hello@ [yS]world@ text")

Enter image description here

6voto

WebMaster Punkte 107

Utilisez pyfancy . Es ist ein einfacher Weg, um Farbe im Terminal zu tun!

Exemple :

print(pyfancy.RED + "Hello Red" + pyfancy.END)

3 Stimmen

Nicht sehr schöner Code, er enthält sogar einen Verweis auf pythonw.exe ;)

6voto

Carson Punkte 3411

Ich habe ein Projekt erstellt ( console-color ) und bereits veröffentlicht auf PyPI .

Sie können werfen pip install console-color um sie zu installieren.

Und ich schreibe das Dokument mit Sphinx-read-the-doc, siehe aquí .

Weitere Beispiele finden Sie unter google-colab .

Ich gebe immer noch einige Beispiele an, um den Benutzer dazu zu bringen, auf den obigen Link zu klicken:

# cprint is something like below
# cprint(text: str, fore: T_RGB = None, bg: T_RGB = None, style: Style = '')
# where T_RGB = Union[Tuple[int, int, int], str] for example. You can input (255, 0, 0) or '#ff0000' or 'ff0000'. They are OK.
# The Style you can input the ``Style.`` (the IDE will help you to choose what you wanted)

# from console_color import RGB, Fore, Style, cprint, create_print
from console_color import *

cprint("Hello, World!", RGB.RED, RGB.YELLOW, Style.BOLD+Style.URL+Style.STRIKE)
cprint("Hello, World!", fore=(255, 0, 0), bg="ffff00", style=Style.BOLD+Style.URL+Style.STRIKE)

Enter image description here

Natürlich müssen Sie nicht alle Parameter eingeben. Sie können nur die gewünschten Attribute hinzufügen.


Um ehrlich zu sein, ist dieses Projekt nichts Besonderes. Es verwendet einfach die f"\033[{target};2;{r};{g};{b}m{text}{style}" wobei target für 38 oder 48, text für die Eingabezeichenfolge und style für ' \33 [0m', ' \33 [1m' ... ' \033 [9m'. Irgendein Zeug.

Und ich mache es einfach zu benutzen (zumindest für mich).

5voto

Al Po Punkte 691

Ich bin neu in Python und bin jedes Mal begeistert, wenn ich Themen wie dieses entdecke. Aber dieses Mal habe ich (plötzlich) das Gefühl, dass ich was zu sagen habe. Vor allem, weil ich vor ein paar Minuten ein wow in Python (zumindest für mich jetzt):

Kontext-Manager

from contextlib import contextmanager
# FORECOLOR
BLACKFC,REDFC,GREENFC,YELLOWFC,BLUEFC = '38;30m','38;31m','38;32m','38;33m','38;34m'
# BACKGOUND
BLACKBG,REDBG,GREENBG,YELLOWBG,BLUEBG = '48;40m','48;41m','48;42m','48;43m','48;44m'

@contextmanager
def printESC(prefix, color, text):
  print("{prefix}{color}{text}".format(prefix=prefix, color=color, text=text), end='')
  yield
  print("{prefix}0m".format(prefix=prefix))

with printESC('\x1B[', REDFC, 'Colored Text'):
  pass

Beispiel

Oder einfach so:

# FORECOLOR
BLACKFC,REDFC,GREENFC,YELLOWFC,BLUEFC = '38;30m','38;31m','38;32m','38;33m','38;34m'
# BACKGOUND
BLACKBG,REDBG,GREENBG,YELLOWBG,BLUEBG = '48;40m','48;41m','48;42m','48;43m','48;44m'

def printESC(prefix, color, text):
  print("{prefix}{color}{text}".format(prefix=prefix, color=color, text=text), end='')
  print("{prefix}0m".format(prefix=prefix))

printESC('\x1B[', REDFC, 'Colored Text')

5voto

ToTamire Punkte 783

Ich wurde von Google dorthin geführt, als ich nachfragte, wie man Protokolle so einfärben kann:

Farblogs

Installation

pip install coloredlogs

Verwendung

Minimale Nutzung:
import logging
import coloredlogs

coloredlogs.install()  # install a handler on the root logger

logging.debug('message with level debug')
logging.info('message with level info')
logging.warning('message with level warning')
logging.error('message with level error')
logging.critical('message with level critical')

Ergebnisse mit: minimal usage

Beginnen Sie mit der Fehlersuche auf Nachrichtenebene:
import logging
import coloredlogs

coloredlogs.install(level='DEBUG')  # install a handler on the root logger with level debug

logging.debug('message with level debug')
logging.info('message with level info')
logging.warning('message with level warning')
logging.error('message with level error')
logging.critical('message with level critical')

Ergebnisse mit: debug level

Nachrichten aus Bibliotheken ausblenden:
import logging
import coloredlogs

logger = logging.getLogger(__name__)  # get a specific logger object
coloredlogs.install(level='DEBUG')  # install a handler on the root logger with level debug
coloredlogs.install(level='DEBUG', logger=logger)  # pass a specific logger object

logging.debug('message with level debug')
logging.info('message with level info')
logging.warning('message with level warning')
logging.error('message with level error')
logging.critical('message with level critical')

Ergebnisse mit: debug level

Protokollmeldungen formatieren:
import logging
import coloredlogs

logger = logging.getLogger(__name__)  # get a specific logger object
coloredlogs.install(level='DEBUG')  # install a handler on the root logger with level debug
coloredlogs.install(level='DEBUG', logger=logger)  # pass a specific logger object
coloredlogs.install(
    level='DEBUG', logger=logger,
    fmt='%(asctime)s.%(msecs)03d %(filename)s:%(lineno)d %(levelname)s %(message)s'
)

logging.debug('message with level debug')
logging.info('message with level info')
logging.warning('message with level warning')
logging.error('message with level error')
logging.critical('message with level critical')

Ergebnisse mit: format log messages

Verfügbare Formatattribute:
  • %(asctime)s - Zeit als menschenlesbare Zeichenkette, wann der Protokollierungsaufruf erfolgte
  • %(created)f - Zeit als Float, als der Protokollierungsaufruf erfolgte
  • %(filename)s - Name der Datei
  • %(funcName)s - Name der Funktion, die den Protokollierungsaufruf enthält
  • %(hostname)s - System-Hostname
  • %(levelname)s - Ebene der Textprotokollierung
  • %(levelno)s - Ganzzahlige Protokollierungsstufe
  • %(lineno)d - Zeilennummer, in der der Logging-Aufruf getätigt wurde
  • %(message)s - An den Protokollierungsaufruf übergebene Nachricht (wie %(msg)s )
  • %(module)s - Dateiname ohne Erweiterung, von dem aus die Protokollierung aufgerufen wurde
  • %(msecs)d - Millisekundenanteil des Zeitpunkts, zu dem der Protokollierungsaufruf erfolgte
  • %(msg)s - An den Protokollierungsaufruf übergebene Nachricht (wie %(message)s )
  • %(name)s - Name des Loggers
  • %(pathname)s - Vollständiger Pfadname der Datei, die den Protokollierungsaufruf enthält
  • %(process)d - Prozess-ID
  • %(processName)s - Name des Prozesses
  • %(programname)s - System Programmname
  • %(relativeCreated)d - Zeitpunkt des Logging-Aufrufs als Ganzzahl in Millisekunden, bezogen auf den Zeitpunkt, zu dem das Logging-Modul geladen wurde
  • %(thread)d - Gewinde-ID
  • %(threadName)s - Name des Themas
  • %(username)s - System-Benutzername

Quellen:

Paket Coloredlogs

Protokollierungsbibliothek

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