1.引言

创建命令行程序很棒:命令行可以按照我们的设定完成相应的工作,相比GUI界面程序,无需花费数小时尝试使 GUI 正常工作。但有时最好有一个更吸引人的程序,而仅使用普通的打印功能是无法直接实现的。

一个很好的折衷方案是使用colorama库。这使我们可以非常轻松地为终端上输出的字符串着色,并且改善程序的界面外观。

闲话少说,接下来让我们看看如何使用它吧!

2.工作原理

这个库背后的实现原理非常简单,它通常使用 ANSA转义字符序列。当终端读取这些序列之一时,它并不会输出。当终端被指示为下一个输出时它采用之前设定的颜色进行相应的输出。

举例来说,字符串\033[92m代表颜色绿色,字符串\033[0m被用来将终端的颜色设置为标准的默认色(通常为黑色)。样例代码如下:

GREEN = '\033[92m'
END_COLOR = '\033[0m'
print(GREEN + "Hello World" + END_COLOR)
print("Hello word 2022!")

上述代码输出如下:

3.使用Colorama库

现在我们明白了上述库的工作原理,接下来我们来使用它。首先是安装,还是使用pip直接进行安装,命令行如下:

pip install colorama

安装完成后,接着我们可以开始编码了。在脚本开头添加以下初始化代码是一种很好的编程写法(在windows系统中比如显示调用init函数):

from colorama import init
init()

这用于确保 Windows 命令行正确处理 ANSA字符串序列。否则,它只会打印出字符序列。
如果您使用的是其他操作系统,此时init()函数将什么事情也不做,但是建议大家仍应该将其显式放入我们的程序中,以确保我们的程序可以在任何平台上正常工作。

现在我们可以开始来使用这个库了。主要分为三个子类:

  • Fore ,用于改变输出文本的颜色;
  • Style,用于改变输出文本的亮度;
  • Back,用于改变输出文本的背景(即突出显示文本)。

4.改变输出文本颜色

接着我们可以从改变文本的颜色开始,Colorama 允许我们使用八种不同的颜色:黑色(black)、红色(red)、绿色(green)、黄色(yellow)、蓝色(blue)、洋红色(magenta)、青色(cyan)、白色(white)。它们在 Fore 类中作为变量实现。他们的名字就是颜色的名字,全部大写。例如:

from colorama import Fore, init
init()
print('Now is not colored')
print(Fore.RED + 'some red text')
print(Fore.GREEN + 'some green text')
print(Fore.MAGENTA + 'some magenta text')
print(Fore.RESET + 'Back to normal')

输出如下:

上述代码很容易实现,正如我们看到的,我们还使用了另一个变量RESET,这主要用于恢复文本的原始颜色。

5.改变输出文本背景

接下来我们将介绍的类为Back, 它实现了与Fore 类相同的九个关键字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET。

此时在这种背景下,设置的颜色将用于更改输出文本的背景(即突出显示文本)。举例如下:

from colorama import Back, init
init()
print('Now is not highlighted')
print(Back.RED + 'some red background')
print(Back.GREEN + 'some green background')
print(Back.MAGENTA + 'some magenta background')
print(Back.RESET + 'Back to normal')

输出如下:

6.改变输出文本亮度

最后,我们可以使用 Style 类来改变输出文本的亮度。该子类含有以下三个主要的关键字:

  • BRIGHT 使得输出文本变亮
  • DIM使得输出的文本变暗(尽管它看起来与普通文本相同)
  • NORMAL是的输出的文本变成正常的亮度
    举例如下:
from colorama import Style, init
init()
print('Normal text')
print(Style.BRIGHT + 'Bright text')
print(Style.NORMAL + 'Normal text')

样例输出如下:

此外,该类还实现了 RESET_ALL 关键字,用于将所有内容(亮度、颜色、背景)重置为正常值。举例如下:

from colorama import Fore, Back, Style, init
init()
print(Style.BRIGHT + 'Now the text is bright')
print(Fore.RED + 'Now the text is bright and red')
print(Back.GREEN + 'Now the text is bright, red and with green      background')
print(Style.RESET_ALL + 'Now everything is back to normal')

输出如下:

7. 总结

本文重点介绍了在Python中使用Colorama类来改变终端输出文字的颜色,亮度和背景,并针对每类情形都进行了举例阐明。

您学废了吗?


关注公众号《AI算法之道》,获取更多AI算法资讯。

参考

Python中终端彩色打印输出相关推荐

  1. Python如何打印彩色文本,代码瞬间高大上【深度好文,果断收藏】

    想在打印信息中重点突出内容 在 Python 中打印彩色文本,不是必须掌握的编程技巧.对,不是比较掌握的,平时显示的黑色字体也不是不能用. 但是,在一些特定的场合,你能通过彩色标注出非常关键的信息,让 ...

  2. 【python图像处理】彩色映射(续篇)

    在Python中的彩色映射一文中,向大伙介绍了一下matplotlib模块中内嵌的colormap,以及如何将这些colormap中的数值导出来以供使用. 在续篇中我们将进一步向大家介绍如何生成自定义 ...

  3. python中哪个函数是用于输出内容到终端的_尔雅通识课妇产科护理学(山东联盟-潍坊医学院)答案新版...

    Python 中,以下哪个函数是用于输出内容到终端的? 答:print 2018年8月27日,他强调,5年来,共建"一带一路"大幅提升了我国贸易投资自由化便利化水平,推动我国开放空 ...

  4. Python中如何查看(打印输出)变量的数据类型

    1 致谢 感谢网友IT技术随笔提供的帮助 链接如下: https://www.cnblogs.com/wushuaishuai/p/7739728.html 2 问题描述 今天在学习如何用OpenCV ...

  5. python在cmd中打印彩色文字

    版权声明:此文首发于我的个人站python在cmd中打印彩色文字,转载请注明出处. 百度来的 颜色值不太准确,下面的是亲测修改的: 单独写了一个文件 printColor.py,使用的时候只要作为模块 ...

  6. 如何在python中显示电脑中的图片-python在终端里面显示一张图片

    Linux终端里面可谓是奇妙无限,很多优秀的软件都诞生在终端里面.相较之下,Windows本身的理念和Linux就不一致,所以,你懂得. 下面,我们不妨先思考一下,如何在终端里面显示一张图片? 在终端 ...

  7. python中打印输出date信息

    python中要打印显示linux命令行date命令的相关信息,有多种方法: 方法1:直接调用linux命令输出:同样也可以打印主机名: [root@host74 tmp]# cat 1.py #!/ ...

  8. Python中如何input一个列表并且print打印输出该列表

    Python要从键盘连续输入一个数组,并用空格隔开,Python中的实现方法如下: str = input('以空格为间隔连续输入一个数组:') 然后在键盘中输入,会得到的str为一个字符串,要将其转 ...

  9. Python中随机森林的实现与解释

    使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...

  10. Python中不为人知的四个特性

    1. 引言 自2017年以来,我一直在用Python编程实现各种各样的功能,但是在过去的一年中才知道这些新的特性.本文重点介绍Python中一些不常用但是非常有用的特性. 闲话少说,我们直接开始吧! ...

最新文章

  1. linux中科大yum源,CentOS:国内常用的yum源
  2. 阿里巴巴硅谷 Istio 专家解读Istio 1.0 发布
  3. Linux Shell脚本实现根据进程名杀死进程
  4. 在Windows2012R2中如何安装IIS8.5
  5. C++ using namespace
  6. Razor传值到js
  7. java开发一个完整的秒杀与竞价网上商城
  8. 文献阅读6-Entity-Relation Extraction as Multi-turn Question Answering(实体关系联合抽取,层次标签依赖关系,multi-turn QA)
  9. linux+系统优化基础,Linux入门基础(三):Linux用户及权限基础
  10. Vuejs 计算属性
  11. Servlet技术 - Servlet应用
  12. 产品经理的段位——说说腾讯的产品职级
  13. 计算机共享文件夹拒绝访问权限,设置共享文件夹访问权限 拒绝访问的方法
  14. 解决ubuntu与virtualbox共享文件夹访问权限问题
  15. 苹果电脑修改MAC地址方法
  16. odom协方差初始化
  17. SSH-免密码互相远程登录
  18. JDK JRE JVM ===》JavaSE 标准版
  19. 刚参加完阿里面试:一面+二面+三面+HR四面,我的复盘经验总结
  20. [BZOJ]1933: [Shoi2007]Bookcase 书柜的尺寸 DP

热门文章

  1. Ansible-Tower自动化运维管理环境部署记录
  2. 八、接口中的默认方法与静态方法
  3. 当图变成了一棵树(纠结的生成树)
  4. awk grep sed cut学习
  5. Linux多线程编程详细解析----条件变量 pthread_cond_t
  6. jsp session 的状态保持, cookie的跨域访问(一)
  7. linux 安装Java
  8. 关闭Windows自动更新—大法
  9. python下载过程中最后一步执行opencv出错怎么回事_PyCharm安装opencv-python和opencv-contrib-python的一些问题和解决方法_2018-09-27...
  10. simple php手册,PHP中SimpleXML函数简介