在pycharm中,Python的print默认向屏幕输出指定的文字,一般所有的print输出都是指定一个颜色的。有时候我们需要输出不同颜色的内容的时候(例如多线程中,每个线程打印出的log颜色不一样,用于区分。又例如打印错误的log,用红色,警告的log用黄色,正常的log,用绿色),应该要怎么做呢?
python中提供了一种输出格式:
格式:"\033[显示方式;前景色;背景色m 需要输出的字符串 \033[显示方式m"
-------------------------------------------
-------------------------------------------
字体色 | 背景色 | 颜色描述
-------------------------------------------
30 | 40 | 黑色|白色
31 | 41 | 红色
32 | 42 | 绿色
33 | 43 | 黃色
34 | 44 | 蓝色
35 | 45 | 紫红色
36 | 46 | 青蓝色
37 | 47 | 白色/灰色
-------------------------------------------
-------------------------------
显示方式 | 效果
-------------------------------
0 | 终端默认设置
1 | 高亮显示
22 | 非粗体
4 | 下划线
24 | 非下划线
5 | 闪烁
25 | 非闪烁
7 | 反显
27 | 非反显
-------------------------------
下面演示一段多线程不同线程输出不同颜色的例子。
def print_color(color_name,color):
start_line = '\033[1;' + color + 'm '
end_line = '\033[0m'
print start_line + color_name + ' '+end_line
if __name__ == '__main__':
import threading
colors_names_list = ["我是白色/黑色(取决于当前输出栏的背景颜色)","我是红色","我是绿色","我是黄色","我是蓝色","我是紫色","我是深绿色","我是白色/灰色(取决于当前输出栏的背景颜色)"]
threads_list = []
colors_list = ['30', '31', '32', '33', '34', '35', '36', '37']
loop_flag = 0
for color_name in colors_names_list:
t = threading.Thread(target=print_color, args=(color_name, colors_list[loop_flag]))
t.start()
threads_list.append(t)
loop_flag += 1
for t in threads_list:
# t.setDaemon(True)
t.join()
我们看下输出: