Цветовые коды печати ASCII сохраняют цвет

Когда я использую:

print('\27[31mReady!')

Все остальное, что я печатаю, сохраняет тот же цвет. И установка \n после него ничего не делает. Что это вообще должно делать? Есть ли команда «\», чтобы вернуть такие коды близких цветов или нет?

Как сделать текст нормальным, чтобы все остальное печатать? Я хочу сделать "Готово!" красный, а все остальное вернулось в нормальное русло с помощью самой простой тактики (любой) и, может быть, если я добавлю еще один отпечаток там, где написано, что он должен быть зеленым, тогда я хочу, чтобы он был просто зеленым после сообщения все должно вернуться в нормальное состояние.


person jepjep40    schedule 26.07.2016    source источник
comment
print('\27[31mReady!\27[39m\n') 30-37 - установить цвет, 39 - восстановить цвет по умолчанию, 0 - сбросить все настройки   -  person Egor Skriptunoff    schedule 26.07.2016


Ответы (2)


Когда вы закончите использовать новый цвет, используйте \27[0m, чтобы восстановить цвета по умолчанию.

Пример:

print('\27[31mReady!\27[0m\n')
person Matthew Curry    schedule 26.07.2016
comment
Это единственный способ? - person jepjep40; 26.07.2016
comment
Я не уверен, что это единственный способ, но это, безусловно, предпочтительный способ. Новые строки (\n) не влияют на цвет. Используйте его везде, где хотите добавить новую строку. Например: print('\27[31mReady!\27[0m\n') - person Matthew Curry; 26.07.2016
comment
Где я могу найти больше \ команд? Должен ли я использовать \n, потому что, если я печатаю что-то еще, он автоматически создает новую строку. - person jepjep40; 26.07.2016
comment
Используйте \n только в противном случае, цвета на это не влияют. Если вы получаете новую строку автоматически и вам не нужна другая, не используйте \n. Google для цветов ANSI в терминалах, есть куча модулей Lua, которые позаботятся об этом. Пример: github.com/kikito/ansicolors.lua - person Matthew Curry; 26.07.2016

Когда вы используете

print('\27[31mReady!')

который изменяет цвет переднего плана. Это одна из стандартных управляющих последовательностей ECMA-48. Большинство (не все) терминалов, которые вы можете использовать, также реализуют стандартный SGR 39 (сбрасывают цвет переднего плана).

print('\27[39mNext!')

Точно так же большинство сбрасываемых цветов (и всех других атрибутов видео) на SGR 0 (ноль не является обязательным):

print('\27[0mDone!')
print('\27[mDone!')

Ссылка:

person Thomas Dickey    schedule 27.07.2016