python带颜色打印字符串
python带颜色打印字符串
之前调试pwn题的时候,有时候需要将某些特别的,重要的信息用不一样的颜色打印出来。查阅一些资料,了解了print函数的特性后,自己写了一个脚本,可以用来获取带颜色信息的字符串或者打印一串带颜色、背景色、下划线等的字符串。
脚本内容
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File : print_with_color.py
@Time : 2021/03/07 12:41:35
@Author : Lynne
@Email : ch22166@163.com
@Desc : None
'''
from functools import partial
class FontColor:
BLACK = 30
RED = 31
GREEN = 32
YELLO = 33
BLUE = 34
AMARANTH = 35
CYAN = 36
WHITE = 37
class BackgroundColor:
NOCOLOR = -1
BLACK = 40
RED = 41
GREEN = 42
YELLO = 43
BLUE = 44
AMARANTH = 45
CYAN = 46
WHITE = 47
class TerminalMode:
DEFAULT = 0
HIGHLIGHT = 1
UNDERLINE = 4
TWINKLE = 5
ANTI_WHITE = 7
INVISIBLE = 8
def __check(font_color:int, background_color:int, terminal_mode:int) -> bool:
b1 = (font_color >= FontColor.BLACK and font_color <= FontColor.WHITE)
b2 = (background_color >= BackgroundColor.BLACK and background_color <= BackgroundColor.WHITE) or background_color == BackgroundColor.NOCOLOR
b3 = (terminal_mode >= TerminalMode.DEFAULT and terminal_mode <= TerminalMode.INVISIBLE and terminal_mode != 2 and terminal_mode != 3 and terminal_mode != 6)
return (b1 and b2 and b3)
def get_str_with_color(print_str:str, *,
font_color:int=FontColor.WHITE,
background_color:int=BackgroundColor.NOCOLOR,
terminal_mode:int=TerminalMode.DEFAULT)-> str:
"""Decorate a string with color
Args:
print_str (str): The str you want to modify.
font_color (int, optional): Font color. Defaults to FontColor.WHITE.
background_color (int, optional): Background color. Defaults to BackgroundColor.NOCOLOR.
terminal_mode (int, optional): terminal mode. Defaults to TerminalMode.DEFAULT.
Returns:
str: A string with elaborate decoration.
"""
check = __check(font_color, background_color, terminal_mode)
if not check:
print('\033[1;31;47mWARNING: Failure to set color!\033[0m')
return print_str
if background_color == BackgroundColor.NOCOLOR:
background_color = ''
else:
background_color = ';'+str(background_color)
res_str = '\033[{};{}{}m{}\033[0m'.format(terminal_mode, font_color, background_color, print_str)
return res_str
def print_color(print_str:str, *,
font_color:int=FontColor.WHITE,
background_color:int=BackgroundColor.NOCOLOR,
terminal_mode:int=TerminalMode.DEFAULT):
"""print a string with color
Args:
print_str (str): The str you want to modify.
font_color (int, optional): Font color. Defaults to FontColor.WHITE.
background_color (int, optional): Background color. Defaults to BackgroundColor.NOCOLOR.
terminal_mode (int, optional): terminal mode. Defaults to TerminalMode.DEFAULT.
"""
print(get_str_with_color(print_str, font_color=font_color, background_color=background_color, terminal_mode=terminal_mode))
# make rgb print func
print_red = partial(print_color,
font_color=FontColor.RED,
background_color=BackgroundColor.NOCOLOR,
terminal_mode=TerminalMode.DEFAULT)
print_green = partial(print_color,
font_color=FontColor.GREEN,
background_color=BackgroundColor.NOCOLOR,
terminal_mode=TerminalMode.DEFAULT)
print_blue = partial(print_color,
font_color=FontColor.BLUE,
background_color=BackgroundColor.NOCOLOR,
terminal_mode=TerminalMode.DEFAULT)
if __name__ == '__main__':
print('Original print: lynne')
print_red('Print with red font: lynne')
print_green('Print with green font: lynne')
print_blue('Print with blue font:lynne')
print_color('Print with cyan font, blue background and underline: lynne', font_color=FontColor.CYAN, background_color=BackgroundColor.BLUE, terminal_mode=TerminalMode.UNDERLINE)
在控制台的打印效果如下:

使用
- get_str_with_color:获取带颜色信息的字符串
- print_color:带颜色打印字符串
- print_red/print_green/print_blue:自已定义一些偏函数,方便使用
python带颜色打印字符串的更多相关文章
- linux下printf打印带颜色的字符串
转载:http://blog.chinaunix.net/uid-28917424-id-3889917.html 前不久就在某位同学的博客里看到,但是今天找了好久没找到,就直接google了,现贴出 ...
- python 带颜色样式打印到终端
#!/usr/bin/python # -*- coding: utf-8 -*- """ Created on Tue Aug 8 17:01:54 2017 @aut ...
- python3使用print打印带颜色的字符串
一.实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033 ...
- 在Linux中让打印带颜色的字
echo显示带颜色,需要使用参数-e 格式如下: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" 例如: echo -e "\033[41;37 ...
- Python_服务器与多客户端通信、UDP协议、pycharm打印带颜色输出、时间同步的机制
1.服务器与多客户端通信 import socket # 创建tcp socket的套接字 sk = socket.socket() # bind sk.bind(('127.0.0.1',8080) ...
- Python 入门 之 print带颜色输出
Python 入门 之 print带颜色输出 1.print带颜色输出书写格式: 开头部分: \033[显示方式; 前景色 ; 背景色 m 结尾部分: \033[0m 详解: 开头部分的三个参数: 显 ...
- DAY4(python)打印字符串以及增删改查
用while循环打印字符串 #if i in s: # print ( i ) s='nanfjkhndaol' index = 0 while 1 : print (s[index]) index+ ...
- 百万年薪python之路 -- 带颜色的print
带颜色的print print输出带颜色的方法详解 书写格式: 开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可 ...
- python 输出颜色的与样式的方法
上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章 ...
随机推荐
- Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors (数学)
题意:有\(n\)组数,对于每组数,问是否能找到两个因子\(d_{1},d{2}\),使得\(gcd(d_{1}+d_{2},a_{i}=1)\),如果有,输出它们,否则输出\(-1\). 题解:对于 ...
- 再记一次 应用服务器 CPU 暴高事故分析
一:背景 1. 前言 大概有2个月没写博客了,不是不想写哈
- CF1400-D. Zigzags
CF1400-D. Zigzags 题意: 给出一个由\(n\)个数字构成的数组\(a\),让你在这个数组中找出有多少个符合以下要求的元组\((i,j,k,l)\): 1. \(i<j<k ...
- 2.使用Helm构建ElasticSearch集群
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-05-24 16:08:53 星期五 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- 9. Lock wait timeout exceeded
一. 现象 用户打开消息推送有概率报错,后续发现推送消息阅读数.点赞数无法正常更新,mysql报警有行锁, DBA抓到有锁表语句,kill该语句未正常恢复,elk日志有大量的java.sql.SQLE ...
- Dapr 交通控制示例
Dapr 已在塔架就位 将发射新一代微服务 牛年 dotnet云原生技术趋势 Dapr是如何简化微服务的开发和部署 前面几篇文章都是从大的方面给大家分享Dapr 能帮助我们解决什么问题,微软从开源到1 ...
- ESLint & vue
ESLint & vue { "name": "app", "version": "1.0.1", " ...
- Smashing Conf 2020
Smashing Conf 2020 https://smashingconf.com/online-workshops/ events https://smashingconf.com/ny-202 ...
- 如何用 js 实现一个 apply 函数
如何用 js 实现一个 apply 函数 原理 实现方式 总结 refs https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referen ...
- how to delete the virtual dom that created in memory using js
how to delete the virtual dom that created in memory using js const virtualDomConvert = (filename = ...