Python实现控制台彩色输出:原理与多进程模拟示例
本文介绍如何在Python中实现控制台彩色输出,通过封装颜色、背景色及样式类,利用ANSI转义序列控制终端显示。文章提供了基础输出方法及常用颜色封装函数,并附带一个使用多进程和事件对象模拟红绿灯交通场景的完整示例,帮助开发者掌握终端交互技巧。
Python控制台彩色输出概述
本文分享Python实现控制台彩色输出的具体代码方案,供读者参考学习。
在Python中实现控制台颜色输出,核心在于函数。该函数作为基础方法,封装了red()、blue()、green()等常用颜色输出功能。方法接受color参数指定文字颜色,bgcolor参数指定背景颜色,style参数定义文本样式(如加粗、下划线等)。其他封装方法的参数逻辑与此一致,具体的颜色值、背景色值及样式值分别封装在Color类、BGColor类和Style类中。
上述基础方法的实现逻辑如下。
out(content, color=Color.DEFAULT, bgcolor=BGColor.DEFAULT, style=Style.DEFAULT)
red (content [, bgcolor, [style]])
green (content [, bgcolor, [style]])
blue (content [, bgcolor, [style]])
yellow (content [, bgcolor, [style]])
bold (content [, color, [bgcolor]])
underline (content [, color, [bgcolor]])
italic (content [, color, [bgcolor]])
Python控制台颜色输出代码实现
完整的Python实现代码如下。
from functools import partial
class Style:
DEFAULT = 0
BOLD= 1
ITALIC = 3
UNDERLINE = 4
ANTIWHITE = 7
class Color:
DEFAULT = 39
BLACK = 30
RED = 31
GREEN = 32
YELLOW = 33
BLUE = 34
PURPLE = 35
CYAN = 36
WHITE = 37
LIGHTBLACK_EX = 90
LIGHTRED_EX = 91
LIGHTGREEN_EX = 92
LIGHTYELLOW_EX = 93
LIGHTBLUE_EX = 94
LIGHTMAGENTA_EX = 95
LIGHTCYAN_EX = 96
LIGHTWHITE_EX = 97
class BGColor:
DEFAULT = 49
BLACK = 40
RED = 41
GREEN = 42
YELLOW = 43
BLUE = 44
PURPLE = 45
CYAN = 46
WHITE = 47
LIGHTBLACK_EX = 100
LIGHTRED_EX = 101
LIGHTGREEN_EX = 102
LIGHTYELLOW_EX = 103
LIGHTBLUE_EX = 104
LIGHTMAGENTA_EX = 105
LIGHTCYAN_EX = 106
LIGHTWHITE_EX = 107
def out(content, color=Color.DEFAULT, bgcolor=BGColor.DEFAULT, style=Style.DEFAULT):
print("\033[{};{};{}m{}\033[0m".format(style, color, bgcolor, content))
red = partial(out, color=Color.RED)
green = partial(out, color=Color.GREEN)
blue = partial(out, color=Color.BLUE)
yellow = partial(out, color=Color.YELLOW)
bold = partial(out, style=Style.BOLD)
underline = partial(out, style=Style.UNDERLINE)
italic = partial(out, style=Style.ITALIC)
多进程模拟红绿灯场景示例
以下是一个利用多进程和事件对象模拟红绿灯交通场景的输出示例。
from multiprocessing import Event, Process
import time
import random
from basicPractice import outputscreen # 这里导入了上面写的模块
def car(event: Event, i: int):
if not event.is_set():
outputscreen.out('car{}等待'.format(i),
bgcolor=outputscreen.BGColor.RED)
event.wait()
else:
outputscreen.out('car{}通行'.format(i),
bgcolor=outputscreen.BGColor.GREEN)
def light(event: Event):
while True:
if not event.is_set():
outputscreen.red('红灯亮了', style=outputscreen.Style.BOLD)
time.sleep(1)
event.set()
else:
outputscreen.green('绿灯亮了', style=outputscreen.Style.BOLD)
time.sleep(3)
event.clear()
if __name__ == '__main__':
event = Event()
p = Process(target=light, args=(event,))
p.start()
for i in range(20):
Process(target=car, args=(event, i)).start()
time.sleep(random.random())

以上内容为本文的全部介绍,希望能为读者的Python学习提供有益帮助。欢迎继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













