VSCode: цвета ANSI в терминале

Как напечатать текст в цветах ansi в терминале с помощью python? У меня есть этот код, чтобы проверить, какой код влияет на текст:

for i in range(0, 55):
    print(f"\033[{i}mAt {i} THIS happens! \033[0m")

Но все, что я вижу, это:

←[0mAt 0 THIS happens! ←[0m
←[1mAt 1 THIS happens! ←[0m
←[2mAt 2 THIS happens! ←[0m
←[3mAt 3 THIS happens! ←[0m
←[4mAt 4 THIS happens! ←[0m
...

В онлайн-редакторе repl.it все работает, как задумано.

Я знаю, что в настройках темы есть terminal.ansi цвета, но как мне получить к ним доступ?


person Tweakimp    schedule 19.04.2018    source источник


Ответы (2)


Я бы использовал пакет colorama для поддержки последовательностей ANSI в Windows.

import colorama
colorama.init()

# your code with ansi sequences here

Редактировать: этот метод не зависит от платформы (последовательности ANSI не будут изменены на терминалах, которые их поддерживают) и позволяет вам использовать необработанные последовательности ANSI в строках, а также предоставляет вам определения цветов.

person Shtaiven    schedule 19.04.2018

Escape-последовательности будут различаться в зависимости от терминала, и если stdout не является tty, для вас все станет странно.

Самый простой способ печатать цвета на терминале, не полагаясь на эти последовательности, — это пакет blessings. . Следующее будет печатать hello красным и world зеленым (например):

from blessings import Terminal
term = Terminal()
print(term.red("hello"), term.green("world"))
person Ryan Haining    schedule 19.04.2018
comment
Вы абсолютно правы. Существует старая утилита Unix под названием tput (Terminal Put), которую можно использовать из сценариев оболочки для поиска escape-последовательностей, подходящих для вашего терминала (согласно вашей настройке среды TERM). Но это седой непостижимый беспорядок. linux.101hacks.com/ps1-examples/prompt-color-using -tput Под капотом благословения и аналогичные модули в Python ссылаются на те же API-интерфейсы terminfo или termcap в C. - person Jim Dennis; 19.04.2018