Python语言修改控制台输出文字的颜色和背景颜色

Python语言修改控制台输出文字的颜色和背景颜色

  • 格式
  • 显示模式
  • 字体颜色
  • 背景颜色
  • 文字加效果显示类

格式

\033[显示模式;字体颜色;背景颜色m

显示模式

显示模式格式
将文本颜色和背景颜色重置为默认值,取消所有其他文本属性\033[0m
高亮(加粗)\033[1m
低亮\033[2m
斜体\033[3m
下划线\033[4m
闪烁\033[5m
快速闪烁\033[6m
反显\033[7m
隐藏\033[8m
删除线\033[9m
for i in range(0, 10):
    print(f'\033[{i}m' + f'字体{i}' + '\033[0m')

在这里插入图片描述

字体颜色

字体颜色格式
黑色\033[30m
红色\033[31m
绿色\033[32m
黄色\033[33m
蓝色\033[34m
紫色\033[35m
靓色\033[36m
白色\033[37m
自定义颜色\033[38m
字体颜色重置为默认值\033[39m
for i in range(0, 10):
    print(f'\033[3{i}m' + f'字体颜色{i}' + '\033[0m')

在这里插入图片描述

这里需要注意自定义颜色,它的格式为:

\033[38;5;颜色值m

颜色值可以取0-255之间的值

for i in range(0, 256):
    if i % 10 == 0:
        print()
    print(f'\033[38;5;{i}m' + f'字体颜色' + '\033[0m', end = ' ')

在这里插入图片描述

背景颜色

背景颜色格式
黑色\033[40m
红色\033[41m
绿色\033[42m
黄色\033[43m
蓝色\033[44m
紫色\033[45m
靓色\033[46m
白色\033[47m
自定义颜色\033[48m
背景颜色重置为默认值\033[49m
for i in range(0, 10):
    print(f'\033[4{i}m' + f'背景颜色{i}' + '\033[0m')

在这里插入图片描述
还是需要注意自定义颜色,它的格式为:

\033[48;5;颜色值m

颜色值可以取0-255之间的值

for i in range(0, 256):
    if i % 10 == 0:
        print()
    print(f'\033[48;5;{i}m' + f'背景颜色' + '\033[0m', end = ' ')

在这里插入图片描述

文字加效果显示类

写了一个给文字加入效果的类,可以指定颜色、显示模式、背景颜色。

import argparse
import subprocess


class DisplayMode:
    def __init__(self):
        self.display_mode = {
            'reset': '\033[0m',
            'highlight': '\033[1m',
            'delight': '\033[2m',
            'italic': '\033[3m',
            'underline': '\033[4m',
            'glitter': '\033[5m',
            'glitter_quick': '\033[6m',
            'invert': '\033[7m',
            'hide': '\033[8m',
            'delete': '\033[9m',
        }

    def __call__(self, mode):
        return self.display_mode[mode]


class FontColor:
    def __init__(self):
        self.font_colors = {
            'black': '\033[30m',
            'red': '\033[31m',
            'green': '\033[32m',
            'yellow': '\033[33m',
            'blue': '\033[34m',
            'purple': '\033[35m',
            'cyan': '\033[36m',
            'white': '\033[37m',
            'custom': '\033[38;5;{color}m'
        }

    def __call__(self, mode, color=None):
        if mode == 'custom' and color is None:
            print(self.font_colors['red'] + '自定义背景字体没有设置' + DisplayMode()('reset'))
        elif mode == 'custom' and color is not None:
            return self.font_colors[mode].replace('{color}', str(color))
        else:
            return self.font_colors[mode]


class BackgroundColors:
    def __init__(self):
        self.background_colors = {
            'black': '\033[40m',
            'red': '\033[41m',
            'green': '\033[42m',
            'yellow': '\033[43m',
            'blue': '\033[44m',
            'purple': '\033[45m',
            'cyan': '\033[46m',
            'white': '\033[47m',
            'custom': '\033[48;5;{color}m'
        }

    def __call__(self, mode, color=None):
        if mode == 'custom' and color is None:
            print(self.background_colors['red'] + '自定义背景颜色没有设置' + DisplayMode()('reset'))
        elif mode == 'custom' and color is not None:
            return self.background_colors[mode].replace('{color}', str(color))
        else:
            return self.background_colors[mode]


def print_text(text, display_mode=None, font_color=None, bg_color=None, end=None, **kwargs):
    """
    彩色输出控制台内容
    :param text: 输出的内容
    :param display_mode: 显示模式
        reset: 重置样式,
        highlight: 高亮,
        delight: 低亮,
        italic: 斜体,
        underline: 下划线,
        glitter: 闪烁,
        glitter_quick: 快速闪烁,
        invert: 反显,
        hide: 隐藏(不显示),
        delete: 删除线
    :param font_color: 字体颜色
        black: 黑色,
        red: 红色,
        green: 绿色,
        yellow: 黄色,
        blue: 蓝色,
        purple: 紫色,
        cyan: 靓色,
        white: 白色,
        custom: 自定义颜色,传入参数fc=颜色,来指定颜色,值在0-255
    :param bg_color:
        black: 黑色,
        red: 红色,
        green: 绿色,
        yellow: 黄色,
        blue: 蓝色,
        purple: 紫色,
        cyan: 靓色,
        white: 白色,
        custom: 自定义颜色,传入参数bg=颜色,来指定颜色,值在0-255
    :param kwargs:
        fc指定字体自定义颜色,bg指定背景颜色自定义颜色,值在0-255
    Example
        print_text('Hello World', 'italic', fc=44, bg=23)
    """
    if display_mode is None:
        display_mode = ''
    else:
        display_mode = DisplayMode()(display_mode)
    if font_color is None or font_color == 'custom':
        if kwargs.__contains__('fc'):
            fc = kwargs['fc']
            font_color = FontColor()('custom', fc)
        else:
            font_color = ''
    else:
        font_color = FontColor()(font_color)

    if bg_color is None or bg_color == 'custom':
        if kwargs.__contains__('bg'):
            bg = kwargs['bg']
            bg_color = BackgroundColors()('custom', bg)
        else:
            bg_color = ''
    else:
        bg_color = BackgroundColors()(bg_color)
    text = str(text)
    if end is None:
        print(display_mode + font_color + bg_color + text + DisplayMode()('reset'))
    else:
        print(display_mode + font_color + bg_color + text + DisplayMode()('reset'), end=end)

def pct(text, **kwargs):
    """
        彩色输出控制台内容
        :param text: 输出的内容
        :param 显示模式
            %
            reset: 重置样式,
            highlight: 高亮,
            delight: 低亮,
            italic: 斜体,
            underline: 下划线,
            glitter: 闪烁,
            glitter_quick: 快速闪烁,
            invert: 反显,
            hide: 隐藏(不显示),
            delete: 删除线
        :param: 字体颜色
            $
            black: 黑色, 1
            red: 红色, 2
            green: 绿色, 3
            yellow: 黄色, 4
            blue: 蓝色, 5
            purple: 紫色, 6
            cyan: 靓色, 7
            white: 白色, 8
            custom: 自定义颜色,传入参数fc=颜色,来指定颜色,值在0-255, 9
        :param: 背景颜色
            &
            black: 黑色, 1
            red: 红色, 2
            green: 绿色, 3
            yellow: 黄色, 4
            blue: 蓝色, 5
            purple: 紫色, 6
            cyan: 靓色, 7
            white: 白色, 8
            custom: 自定义颜色,bg=颜色,来指定颜色,值在0-255, 9
        :param kwargs:
            fc指定字体自定义颜色,bg指定背景颜色自定义颜色,值在0-255
        Example
            text = '''
                %hl+$4+Warning:^- %i+&9+this method is discarded.^-
            '''
        """
    display_mode = DisplayMode()
    font_color = FontColor()
    bg_color = BackgroundColors()
    text = text.replace('^-', display_mode('reset'))
    text = text.replace('%hl+', display_mode('highlight'))
    text = text.replace('%dl+', display_mode('delight'))
    text = text.replace('%i+', display_mode('italic'))
    text = text.replace('%u+', display_mode('underline'))
    text = text.replace('%g+', display_mode('glitter'))
    text = text.replace('%gq+', display_mode('glitter_quick'))
    text = text.replace('%in+', display_mode('invert'))
    text = text.replace('%h+', display_mode('hide'))
    text = text.replace('%d+', display_mode('delete'))

    colors = [
        {"name": "black", "chinese": "黑色", "id": 1, "description": "黑色, 1"},
        {"name": "red", "chinese": "红色", "id": 2, "description": "红色, 2"},
        {"name": "green", "chinese": "绿色", "id": 3, "description": "绿色, 3"},
        {"name": "yellow", "chinese": "黄色", "id": 4, "description": "黄色, 4"},
        {"name": "blue", "chinese": "蓝色", "id": 5, "description": "蓝色, 5"},
        {"name": "purple", "chinese": "紫色", "id": 6, "description": "紫色, 6"},
        {"name": "cyan", "chinese": "靓色", "id": 7, "description": "靓色, 7"},
        {"name": "white", "chinese": "白色", "id": 8, "description": "白色, 8"},
        {"name": "custom", "chinese": "自定义颜色", "id": 9,
         "description": "自定义颜色,传入参数fc=颜色,来指定颜色,值在0-255"}
    ]
    bg = 256
    if kwargs.__contains__('bg'):
        bg = kwargs['bg']
    fc = 256
    if kwargs.__contains__('fc'):
        fc = kwargs['fc']

    for i in range(9):
        text = text.replace(f'${i + 1}+', font_color(colors[i]['name'], fc))

    for i in range(9):
        text = text.replace(f'&{i + 1}+', bg_color(colors[i]['name'], bg))
    print(text)


if __name__ == '__main__':
    pct('%hl+$4+Warning:^- %i+&9+this method is discarded.^-')
    print_text('Hello World', 'italic', fc=44, bg=23)

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725941.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 部门人力分配 - 二分查找(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

redis-实战篇(8)达人探店

8、达人探店 8.1、达人探店-发布探店笔记 发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个: tb_blog:探店笔记表,包含笔记中的标题、文字、图片等 tb_blog_comments:其他用户对探店笔记的…

最新PHP仿猪八戒任务威客网整站源码/在线接任务网站源码

资源介绍 老规矩,截图为亲测,前后台显示正常,细节功能未测,有兴趣的自己下载。 PHP仿猪八戒整站源码下载,phpmysql环境。威客开源建站系统,其主要交易对象是以用户为主的技能、经验、时间和智慧型商品。经…

上海亚商投顾:创业板指低开低走 先进封装概念午后走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量震荡调整,深成指、创业板指跌超1%。车路云概念延续强势,长江通信4连板&am…

LVGL开发教程-FreeRTOS中的LVGL

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 重要步骤 lv_tick_inc(x) lv_timer_handler() 1. 声明一把锁 2. 初始化这把锁 3. 创建一个任务 4. 编写任务的内容 完整示例代码 总结 前言 在嵌入式系统开发中,使用LVGL&…

Docker定位具体占用大量存储的容器

监控告警生产环境的服务器磁盘分区使用率大于90%,进入服务器查看Docker 的 overlay2 存储驱动目录中占用很大,很可能是某个容器一直在打印日志,所以需要定位到是哪个容器,然后进行进一步排查。 然后进入到overlay2中查看是哪个目录…

优化改进YOLOv5算法之Shift-ConvNets,具有大核效应的小卷积核,效果提升明显

目录 1 Shift-ConvNets模块原理 1.1 Decomposition and Combination of Convolution 1.2 Sparse Dependencies of Large Convolution Kernels 1.3 Intermodule Feature Manipulation 2 YOLOv5中加入Shift-ConvNets模块 2.1 common.py文件配置 2.2 yolo.py配置 2.3 创建…

【Spine学习13】之 制作受击动画思路总结(叠加颜色特效发光效果)

绑定IK腿部骨骼容易出错的一种方式, 要记住 如果按照错误方式绑定骨骼,可能移动IK约束的时候会另腿部的弯曲方向相反了 : 上节分享了攻击动作的制作思路总结, 这节总结受击思路。 第一步: 创建一个新的动画&#xff1…

专业140+总分400+武汉理工大学855信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

专业855信号与系统140,总分400,今年顺利上岸武汉理工大学,总结一下自己的复习经历,希望对报考武理工的同学有所帮助。专业课:855信号与系统 首先教材: 《信号与系统》高等教育出版社 作者:刘泉…

Vue65-vue-resource:ajax请求

vue-resource是vue的插件库,用vue.use(xxxx)使用插件。 1、安装 2、引入和使用 这个库,维护的频率不高了。还是建议使用:axios,vue-resource只是了解即可。

1969python房屋租赁管理系统mysql数据库Flask结构BootStrap布局计算机软件工程网页

一、源码特点 python Flask房屋租赁管理系统是一套完善的web设计系统mysql数据库 ,对理解python编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 python flask 房屋租赁管理系统 开发环境pycharm mysql …

大模型的下一站:AI Agent!

前言 现在各家基本上都有自己的大模型产品,现在的重点都是在找商业模式,以及扩展大模型的应用场景上。所以大家做APP、做Copilot也就不足为奇,都是为自己找出路的做法。但从作者的角度,Copilot只是传统互联网应用到大模型应用的过…

汇凯金业:现货黄金技术分析及其应用

现货黄金技术分析是一种通过市场价、量、时、空间四个元素的研究,利用图表表达数据,从而预测未来价格走向的方法。虽然技术分析并非完美无缺,但它在投资决策中起到了重要作用。以下是现货黄金技术分析的详细介绍及其应用方法。 技术分析的基…

1分钟告诉你电脑微信文件夹储存在什么位置!

在日常生活中,微信已经成为我们不可或缺的社交工具之一,我们使用它来与亲朋好友保持联系,分享生活中的点滴。然而,随着我们在微信中发送和接收越来越多的信息、图片、视频等内容,微信所占用的存储空间也逐渐增加。 因…

做一个架构师需要什么能力?

作为一个架构师,需要具备多方面的能力来确保项目的顺利进行和系统的成功设计。以下是架构师所需的主要能力,按照不同的类别进行归纳和分点表示: 技术能力 编程能力:架构师通常是一个开发团队中技术较为出色的人员之一&#xff0…

转型技术管理:九大步骤解锁高效管理新境界

文章目录 引言一、寻求反馈二、从员工的角度看待问题三、总览全局四、管理自己的情绪五、赞赏员工的出色工作六、在人前支持员工七、管理自己的职业生涯八、认识到自己也许存在偏见,与不同于自己的人交流九、在工作中建立信任和沟通总结 引言 在快速变化的科技浪潮…

短视频开源项目MoneyPrinterTurbo:AI副业搞起来,视频制作更轻松!

目录 引言一、MoneyPrinterTurbo简介二、MoneyPrinterTurbo的核心功能三、MoneyPrinterTurbo的未来发展四、MoneyPrinterTurbo与AI副业五、部署实践1、克隆代码2、创建虚拟环境3、安装依赖4、安装好 ImageMagick5、端口映射6、启动Web界面7、模型配置8、填写主题9、视频生成10、…

Linux系统中的权限

在Linux系统中,权限是确保文件和目录安全性的关键机制。理解Linux权限对于有效管理和保护系统至关重要。本文将深入探讨Linux权限的概念、分类、设置方法以及实际应用,帮助读者更好地理解和运用这一关键技术。 一、Linux权限概述 Linux权限主要涉及三个…

前端路线指导(1):前端学习路线

小粉前端学习路线(前言) 哈喽大家好!我是小粉,双一流本科,自学前端一年,收获腾讯,字节等9家互联网大厂offer,秋招面试通过率100%,其中半数offer为ssp(薪资最高…

打造智能环境监测系统:全面解析Arduino Uno引脚与芯片功能!

Arduino Uno 是一个非常流行的微控制器开发板,广泛用于各种物联网项目。理解每个引脚的功能对于充分利用 Arduino Uno 的能力至关重要。本文将详细介绍 Arduino Uno 的每个引脚的功能、芯片功能,并通过表格、流程图和其他图表来帮助理解。 Arduino Uno 引…