Как использовать цвет в командной строке Windows с помощью Python?

Я пытаюсь исправить проблема waf, где вывод командной строки Windows не окрашен, когда он должен быть. Я пытаюсь понять, как на самом деле реализовать этот патч, но у меня возникли проблемы с поиском достаточных ресурсов - может ли кто-нибудь указать мне в правильном направлении?

обновление 1

пожалуйста, не предлагайте ничего, что требует Cygwin.

2 ответов


это возможно благодаря ctypes и SetConsoleTextAttribute

вот пример

from ctypes import *
STD_OUTPUT_HANDLE_ID = c_ulong(0xfffffff5)
windll.Kernel32.GetStdHandle.restype = c_ulong
std_output_hdl = windll.Kernel32.GetStdHandle(STD_OUTPUT_HANDLE_ID)
for color in xrange(16):
    windll.Kernel32.SetConsoleTextAttribute(std_output_hdl, color)
    print "hello"

Если вы заинтересованы в использовании обычного cmd.exe консоли для интерактивного интерпретатора Python, см. этот рецепт. Если вы в порядке с использованием специальных окон, имитирующих консоль, например, потому, что вам также нужна более продвинутая функциональность проклятий, то предложение @TheLobster о wcurses просто отлично.