如何使用Python在Windows命令提示符中添加颜色?

10

我正在尝试修补一个 waf问题,在这个问题中,当Windows命令提示符输出应该被着色时,它没有被着色。我正在努力找到足够的资源来弄清楚如何实现这个补丁,但是我很难找到足够的资源 - 能否有人指点一下我?

更新1

请不要建议任何需要使用Cygwin的内容。

2个回答

21

借助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"

3
一个快速提示给其他尝试这个的人——它在IDLE中不起作用,请使用python.exe或在cmd.exe中将其作为脚本运行。 - tgray
我鼓励那些更现代的搜索者去看一下iPython是如何完成这个任务的,它以一种非常智能和可移植的方式处理事情。 - meawoppl

3
如果您想在Python交互式解释器中使用普通的cmd.exe控制台,请参见this recipe。如果您愿意使用模拟控制台的特殊窗口,例如因为您还需要更高级的curses功能,则@TheLobster提出的wcurses建议非常合适。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接