@VuztreeCalan
Дилетант Широкого Профиля

Чем объяснить разность в обработке текста внутри print и input, при запуске через CMD?

Лирическое отступление - захотел немного украсить программу цветными символами в консоли, нагуглил про модули colorama и termcolor, потестил, на первый взгляд всё было хорошо, всё выводится, но потом заметил странные вещи если запускать прогу не через IDE(Там всё работает), а через CMD:
Есть следующий элемент:
attentionSign = colored("[!]", 'red')
И если я запихну его в print, то всё будет работать, а если в input - то увижу текстовое обозначение цвета, тобишь крокозябры
IDE
5bc2faaf1ea72420610601.pngCMD
5bc2f9d4af624036831503.png
Так вот понимающие люди, объясните пожалуйста желторотику почему CMD по разному обрабатывает текст внутри input и print?

P.S. Весь код:
# coding: utf8
from colorama import init
from termcolor import colored

init()
attentionSign = colored("[!]", 'red')

print("Цветной символ внутри print:")
print(attentionSign)
print("Цветной символ внутри input")
input(attentionSign)
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
То, что Colorama не работает с input на Python версии 3.5 и выше - зарегистрированный баг, являющийся следствием бага Python. Если вкратце, то функция print использует для вывода сишную функцию write с дескриптором stdout, а функция input WinAPI-вызов WriteConsoleW, который управляющие последовательности не понимает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы