首页 > 编程语言 >Python控制台输出的华丽变身:色彩与风格的深度探索

Python控制台输出的华丽变身:色彩与风格的深度探索

时间:2024-07-31 15:55:26浏览次数:15  
标签:Python 样式 字体 华丽 print 033 控制台 文本 0m

一、文章摘要

本文深入探讨了Python标准输出中字体颜色的设置方法,特别是通过ANSI转义序列实现的文本样式控制。文章详细解析了ANSI转义序列的组成、各个颜色代码的含义,以及如何在Python中使用这些代码来改变终端输出的字体颜色、背景色、高光、加粗等样式。通过丰富的案例代码,本文为Python开发者提供了一套完整的终端字体颜色设置指南。

二、引言

在Python编程中,通过标准输出(如print函数)向终端显示信息时,默认情况下文本颜色和样式是单调的。然而,通过利用ANSI转义序列,我们可以轻松地改变输出文本的字体颜色、背景色、高亮显示、加粗等样式,从而增强信息的可读性和视觉效果。

三、语法格式

ANSI转义序列以ESC字符(\033\e\x1b,通常写作\033\x1b以保持与Unix/Linux系统的兼容性)开头,后跟一个或多个用方括号[]括起来的参数。这些参数指定了要应用的样式变化。

语法格式:

一般以\033开头,然后跟上[中括号,第一个参数是显示方式例如使用下划线显示或者高亮显示,然后就是文本颜色和背景色,m结尾

\033[显示方式;文本颜色;背景色m

设置之后以\033[0m 对需要设置的文字结尾,该语句表示重置所有样式,以确保后续的输出不会继承之前的样式设置,相当于一个截止,不设置的话后面所有输出都会用刚才设置的字体样式输出的。

四、参数

1、文字颜色

代码颜色
30黑色
31红色
32绿色
33黄色
34蓝色
35洋红色
36青色
37白色

2、背景颜色

代码颜色
40黑色
41红色
42绿色
43黄色
44蓝色
45洋红色
46青色
47白色

3、显示方式

代码示例说明
0\033[1m

采用终端默认设置,取消所有设置

1\033[1m使文本加粗显示。注意,在某些终端中,加粗可能同时增加了文本的亮度。
4\033[4m为文本添加下划线。但请注意,并非所有终端都支持此样式。
5\033[5m使文本闪烁。然而,由于闪烁文本可能会对某些用户造成不适,因此其使用应谨慎。此外,并非所有终端都支持文本闪烁。
7\033[7m将前景色和背景色互换。这通常用于创建高亮效果,特别是当背景色是深色而文本色是浅色时。
8\033[8m在某些终端中,这会使文本“隐藏”或变得不可见。然而,这个参数的支持并不普遍,且其行为可能因终端而异。
9\033[9m为文本添加交叉删除线效果。这种效果通常用于表示文本已被删除或不再有效。但请注意,并非所有终端都支持此样式。

需要强调的是,上述参数中的某些(如下划线、闪烁、隐藏文本、交叉删除线以及框架和环绕)可能并不被所有终端支持。此外,即使终端支持这些参数,其实际效果也可能因终端的不同而有所差异。

四、代码操作

1、字符串末尾不限制的话

如果在字符串的末尾不使用\033[0m来重置所有样式的话,后续的输出会继承之前的样式设置。

#黑色字体加红色背景
print("\033[0;30;41mhello python")
print("hello java")
print("hello php")

输出结果:

2、各个样式输出

print("\033[0;30;41m我是无显示方式+黑色字体+红色背景\033[0m")
print("\033[1;31;42m我是文本加粗+红色字体+绿色背景\033[0m")
print("\033[4;32;43m我是文本下划线+绿色字体+黄色背景\033[0m")
print("\033[5;33;44m我是文本闪烁+黄色字体+蓝色背景\033[0m")
print("\033[7;34;45m我是文本颜色和背景颜色互换+蓝色字体+洋红色背景\033[0m")
print("\033[9;35;46m我是交叉删除线+洋红色字体+青色背景\033[0m")
print("\033[0;36;47m我是无显示方法+青色字体+白色背景\033[0m")
print("\033[0;37;40m我是无显示方法+白色字体+黑色背景\033[0m")

输出结果:

六、结论

本文通过详细解析ANSI转义序列的组成和用法,以及提供丰富的案例代码,为Python开发者提供了一套完整的终端字体颜色设置指南。掌握这些技巧将有助于开发者在编写命令行工具或脚本时,以更加生动和富有表现力的方式向用户展示信息。同时,也需要注意ANSI转义序列的兼容性和潜在的性能影响。

通过这篇文章给大家分享我在学习过程中的一些经验和心得,希望能够对大家有所帮助,同时也接受大家的建议和意见,共同进步、共同学习。

如果你觉得我的文章对你有所帮助,我诚挚地邀请你关注、点赞和分享。

标签:Python,样式,字体,华丽,print,033,控制台,文本,0m
From: https://blog.csdn.net/qq_51431069/article/details/140818307

相关文章

  • 二十五、【机器学习】-【Python手搓3层神经网络】:从零构建深度学习模型的实战指南
    目录一、序章:为什么你需要掌握手搓神经网络二、基础篇:神经网络基础知识回顾三、实战配置:搭建3层神经网络的步骤与技巧(一)、__init__ 方法初始化神经网络(二)、train 方法实现了前向传播和反向传播(三)、query 方法(四)、全部代码四、总结一、序章:为什么你需要掌握手......
  • 在Python中将简单的字典导出到Excel文件中
    我是Python新手。我有一个简单的字典,其键和值如下dict1={"numberofstoragearrays":45,"numberofports":2390,......}我需要将它们放入Excel表中,如下numberofstoragearrays45numberofports2390我有一个非常大的字典。importpandasasp......
  • 将 python 脚本作为 AWS 胶水服务作业运行
    我有一个使用本地路径在本地运行的python脚本,但我需要复制此python脚本并将其作为AWS胶水服务作业运行并将输出保存在s3存储桶中。请帮助我逐步说明。将Python脚本作为AWSGlue作业运行的步骤如下:步骤1:修改的Python脚本以使其与Glue兼容......
  • Python - Decorating classes
    Whenwetalkaboutdecoratingclasses,wecaneitherdecorateindividualmethodsorwecancreateadecoratortodecoratethewholeclass.classMyClass:def__init__(self,a):self.a=a@timerdefmethod1(self,x,y):print......
  • 如何在 python 中使用矩阵分解从 3 个不同的矩阵(2 个交互矩阵和 1 个相似矩阵)创建一个
    我有3个不同大小的矩阵A、B、C,它们有一些共同的元素。A(相似性)与B(交互)有一些共同元素,但与C(第二交互矩阵)没有共同元素。B有一些与C相同的元素。我想创建一个基于B和C的矩阵M,但提供基于A、B、C的输出,就像推荐系统类型一样,其中根据评分、观看次数和偏好推荐电影。例......
  • Python - Decorators
    Adecoratorisacallablethattakesacallableasinputandreturnsacallable.Thisisthegeneraldefinitionofadecorator.Thecallableinthisdefinitioncanbeafunctionoraclass.Inourinitialdiscussion,wewilltalkaboutdecoratorfunctions......
  • Python捕获一组中的1000个项目进行处理
    我有一个包含数千条记录的大表(可能有3,000到75,000条记录),我将所有数字ID放入排序列表中。我想一次有序地处理一组1000个ID。我如何优雅地获取前1000个和“标签”,设置为“223344到337788”(字典在这里有意义吗,或者只是列表捕获中的第一个/最后一个项目......以跟......
  • 在 Python 中创建和/或检查编号变量的优雅方法
    我是一个试图学习Python的老家伙,所以我最后的编码经验是使用BASIC-不,不是VisualBasic。我理解一些与Python相关的概念,但我处于初级编码阶段,所以我使用“强力”逻辑编写了这个项目-基本上,将字符串分解为单个字母,然后用经典的“”测试每个字母猜单词类型的游戏。......
  • 使用法兰克福 API 和 Python 虚拟环境时出现 404 错误
    我正在VisualStudioCode中用Python制作货币转换器脚本,并且使用法兰克福API,它在几天前一直工作正常,直到现在每次我尝试获取API时都会收到404错误:|||输出:>response=requests.get(f"https://api.frankfurter.app/latest?amount={amount}&from={CF}&to={CT}")>......
  • 我的目标是检测车道并控制车辆保持在车道中央。使用Python
    我目前正在做一个项目,我是一个初学者。并且我需要找到一种方法来使用检测到的车道来控制我的项目车辆保持在两条线之间的中心。img1|||img2我有疑问的话题如下如何判断我的机器人车是否在车道中央?我们应该用什么方法来控制机器人的转向......