写工具时需要把某些信息高亮给他们看,
于是收集了几种”控制python输出颜色”的方式
\033/\x1b
这是网上搜的第一种,也是我收集的原因,因为这种失败了,在我的电脑上不能控制输出颜色,因为这是python3才有的,我用的python2.
比如:
1 2 3
| print '\033[1;30;41m', 'hello world!'
|
应该输出红色的hello world!
,但是我电脑上会是[1;30;41m hello world!
同时还延伸至其他库如colorama
,sty
等,我这里均以失败告终
ctypes..SetConsoleTextAttribute
这种比较方便,调用ctypes直接操作控制台.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import ctypes STD_OUTPUT_HANDLE= -11 FOREGROUND_RED = 0x0c FOREGROUND_DARKWHITE = 0x07 std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) def set_color(color, handle=std_out_handle): bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bool print u'普通颜色文字' set_color(FOREGROUND_RED) print u'红色文字' set_color(FOREGROUND_DARKWHITE) print u'又是普通文字'
|
结果是想要的样子.
logging && coloredlogs
coloredlogs是一个专为logging准备的库,日志在控制台输出的时候,可以有不同颜色区分.
简单用法如下
1 2 3 4 5 6 7 8 9 10 11 12
| import logging import coloredlogs coloredlogs.install(level = 'DEBUG') logger = logging.getLogger(__name__) logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.fatal('fatal message')
|
利用coloredlogs的install方法,把level以上等级的,用他自带的颜色配置输出,需要注意的是,install之后,logger.setLevel会失效,而且level等级以下的,将不会显示在控制台.
最后
第一种最方便,如果是python3,适用于小脚本/工具。
第二种兼容,python2和3都可以用,适用于小脚本/工具。
第三种适合于工程中的使用,工程中都是用logging来写日志的。