Python终端打印彩色字符

我们在编写python程序时,有时会遇到一些在终端打印彩色字符的需求,特别是针对一些标识日志条目类别的单词,例如“OK”、“ERROR”、“INFO”之类的。有和我一样需求的朋友可以参考下面的做法。

1. 实现原理

  首先,向终端输出彩色字符,色彩的设置由目标终端文字系统和转义字符控制,与具体的编程语言无关。其格式如下:

print("\033[文字效果;前景色;背景色m文字内容\033[0m") 

  下面说明一下上面的参数如何设置:

参数名称 参数值
文字效果 0:终端默认,1:高亮,4:下划线,5:闪烁,7:反白显示
前景色 30(黑),31(红),32(绿),33(黄),34(蓝),35(紫),36(青),37(灰)
背景色 40(黑),41(红),42(绿),43(黄),44(蓝),45(紫),46(青),47(灰)

  给出2个例子,大家参考一下,更多的可以自己尝试:

print("\033[0;31;44mHello world!\033[0m")  # 不高亮,红字,蓝底
print("\033[1;31;40mHello world!\033[0m")  # 高亮,红字,黑底

在这里插入图片描述

2. 适用范围

  Windows下,命令提示符、Powershell不支持上述转义字符,通过WSL进Linux子系统能正常显示。
  Linux下一般的终端可以显示。
  Pycharm、VScode等IDE自带的终端可以显示。

3. 函数案例

  每次都重新编辑转义字符串、查颜色表是一件很不优雅的事情。Python有一些封装好颜色字符库可以使用。我这里只是自己简单封装了一下,主要用于打印服务器日志记录,提供高亮黑底状态下的红、黄、绿、白字显示,并且可以选择是否在字符串开头打印时间戳,仅供参考。

import time
# 打印彩色字符
def colormsg(msg: str, color: str = "", timestamp: bool = True):
    str = ""
    if timestamp:
        str += time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) + "  "
    if color == "red":
        str += "\033[1;31;40m"
    elif color == "green":
        str += "\033[1;32;40m"
    elif color == "yellow":
        str += "\033[1;33;40m"
    else:
        print(str + msg)
        return
    str += msg + "\033[0m"
    print(str)

  给出几个使用示例:

colormsg("[ERROR]网络连接异常!", "red")
colormsg("[OK]认证成功!", "green")
colormsg("[INFO]远程连接已关闭", "yellow")
colormsg("Hello World!", timestamp=False)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38236620/article/details/127474029
今日推荐