Ubuntu环境下Python脚本实现控制台字体颜色自定义技巧与实践

在开发过程中,控制台输出的信息往往是黑底白字,这对于长时间阅读大量日志的开发者来说,不仅视觉疲劳,还可能因为信息不够突出而错过关键细节。本文将介绍如何在Ubuntu环境下,使用Python脚本自定义控制台字体颜色,提升开发体验。

一、背景知识

在Unix-like系统中,控制台字体颜色是通过ANSI转义序列来控制的。ANSI转义序列是一系列字符,用于控制终端的光标位置、颜色和其他选项。常见的ANSI颜色代码如下:

  • \033[0m:重置所有属性到默认值
  • \033[1m:粗体
  • \033[31m:红色
  • \033[32m:绿色
  • \033[33m:黄色
  • \033[34m:蓝色
  • \033[35m:紫色
  • \033[36m:青色
  • \033[37m:白色

其中,\033是ESC字符的八进制表示,[后面跟随的是具体的控制代码。

二、Python脚本实现

接下来,我们将通过一个Python脚本来实现控制台字体颜色的自定义。

1. 导入必要的模块
import sys
2. 定义颜色代码字典
COLORS = {
    "RESET": "\033[0m",
    "BOLD": "\033[1m",
    "RED": "\033[31m",
    "GREEN": "\033[32m",
    "YELLOW": "\033[33m",
    "BLUE": "\033[34m",
    "PURPLE": "\033[35m",
    "CYAN": "\033[36m",
    "WHITE": "\033[37m",
}
3. 定义输出函数
def colored_print(text, color="WHITE"):
    if color in COLORS:
        print(f"{COLORS[color]}{text}{COLORS['RESET']}")
    else:
        print(text)
4. 测试函数
def main():
    print("Default color:")
    print("Hello, World!")
    
    print("\nColored text:")
    colored_print("Hello, World!", "RED")
    colored_print("Hello, World!", "GREEN")
    colored_print("Hello, World!", "YELLOW")
    colored_print("Hello, World!", "BLUE")
    colored_print("Hello, World!", "PURPLE")
    colored_print("Hello, World!", "CYAN")
    colored_print("Hello, World!", "WHITE")
    
    print("\nBold text:")
    colored_print(f"{COLORS['BOLD']}Hello, World!", "WHITE")

if __name__ == "__main__":
    main()

三、实践应用

在实际开发中,我们可以将这个脚本集成到日志系统中,使得不同级别的日志信息以不同的颜色显示。例如:

def log_info(message):
    colored_print(f"INFO: {message}", "BLUE")

def log_warning(message):
    colored_print(f"WARNING: {message}", "YELLOW")

def log_error(message):
    colored_print(f"ERROR: {message}", "RED")

def log_success(message):
    colored_print(f"SUCCESS: {message}", "GREEN")

# 测试日志函数
log_info("This is an info message.")
log_warning("This is a warning message.")
log_error("This is an error message.")
log_success("This is a success message.")

四、进阶技巧

  1. 动态颜色选择:可以通过参数动态选择颜色,甚至可以通过随机函数生成颜色,增加输出的趣味性。
import random

def random_colored_print(text):
    color = random.choice(list(COLORS.keys()))
    colored_print(text, color)

random_colored_print("Hello, Random Color!")
  1. 背景颜色设置:ANSI转义序列同样支持背景颜色设置,例如\033[41m表示红色背景。
def colored_background_print(text, background="RED"):
    bg_code = f"\033[{int(background)+10}m"
    print(f"{bg_code}{text}{COLORS['RESET']}")

colored_background_print("Hello, Red Background!", "RED")
  1. 组合属性:可以组合多种属性,如粗体加颜色。
def bold_colored_print(text, color="WHITE"):
    print(f"{COLORS['BOLD']}{COLORS[color]}{text}{COLORS['RESET']}")

bold_colored_print("Hello, Bold and Colored!", "GREEN")

五、总结

通过本文的介绍,我们学会了如何在Ubuntu环境下使用Python脚本自定义控制台字体颜色。这不仅提升了日志的可读性,还增加了开发的趣味性。希望这些技巧能帮助你在日常开发中更加高效和愉悦。

最后,附上完整的脚本代码供参考:

import sys
import random

COLORS = {
    "RESET": "\033[0m",
    "BOLD": "\033[1m",
    "RED": "\033[31m",
    "GREEN": "\033[32m",
    "YELLOW": "\033[33m",
    "BLUE": "\033[34m",
    "PURPLE": "\033[35m",
    "CYAN": "\033[36m",
    "WHITE": "\033[37m",
}

def colored_print(text, color="WHITE"):
    if color in COLORS:
        print(f"{COLORS[color]}{text}{COLORS['RESET']}")
    else:
        print(text)

def colored_background_print(text, background="RED"):
    bg_code = f"\033[{int(background)+10}m"
    print(f"{bg_code}{text}{COLORS['RESET']}")

def bold_colored_print(text, color="WHITE"):
    print(f"{COLORS['BOLD']}{COLORS[color]}{text}{COLORS['RESET']}")

def random_colored_print(text):
    color = random.choice(list(COLORS.keys()))
    colored_print(text, color)

def main():
    print("Default color:")
    print("Hello, World!")
    
    print("\nColored text:")
    colored_print("Hello, World!", "RED")
    colored_print("Hello, World!", "GREEN")
    colored_print("Hello, World!", "YELLOW")
    colored_print("Hello, World!", "BLUE")
    colored_print("Hello, World!", "PURPLE")
    colored_print("Hello, World!", "CYAN")
    colored_print("Hello, World!", "WHITE")
    
    print("\nBold text:")
    bold_colored_print("Hello, World!", "WHITE")
    
    print("\nRandom color:")
    random_colored_print("Hello, Random Color!")
    
    print("\nBackground color:")
    colored_background_print("Hello, Red Background!", "RED")

if __name__ == "__main__":
    main()

希望这篇文章对你有所帮助,快去试试这些有趣的技巧吧!