Wie kann ich in Python farbigen Text auf dem Terminal ausgeben?
Nicht sehr schöner Code, er enthält sogar einen Verweis auf pythonw.exe ;)
Wie kann ich in Python farbigen Text auf dem Terminal ausgeben?
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")
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)
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).
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):
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
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')
Ich wurde von Google dorthin geführt, als ich nachfragte, wie man Protokolle so einfärben kann:
pip install coloredlogs
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')
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')
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')
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')
%(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 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 .