Можно ли напечатать `traceback.format_ex c ()` в цвете с помощью colour-traceback.py - PullRequest
1 голос
/ 10 апреля 2020

Я регистрирую вывод traceback.format_exc(). Можно ли покрасить его, используя colour-traceback.py при использовании печати или альтернативы?

Пример кода:

import traceback
import colored_traceback
colored_traceback.add_hook(always=True)

a = 1 / 0 # prints colored traceback results 

try:
    a = 1 / 0
except:
    traceback.print_exc()  # prints in color white
    print(traceback.format_exc())  # prints in color white

1 Ответ

1 голос
/ 11 апреля 2020

colored_traceback выглядит полезным, но я думаю, что это излишне для вашей цели. Вы можете достичь желаемого эффекта с помощью библиотеки pygments и нескольких строк кода:

import traceback

from pygments import formatters, highlight, lexers


try:
    a = 1 / 0
except:
    tb_text = "".join(traceback.format_exc())

    lexer = lexers.get_lexer_by_name("pytb", stripall=True)
    formatter = formatters.get_formatter_by_name("terminal256")
    tb_colored = highlight(tb_text, lexer, formatter)

    print(tb_colored)
...