【python】在终端中输出彩色文字
本帖最后由 thepoy 于 2021-5-28 20:23 编辑之前写[彩色日志](https://pypi.org/project/colorful-logger/)的时候用到了彩色文字打印,后来觉得彩色文字不只应用于日志中,其他场合下也可能会用到,比如著名的 ipython。
于是就将彩色文字部分独立出来,方便以后使用,也方便有兴趣的朋友使用。
可以直接用 pip 安装:
```shell
pip install colort
```
源码也很简单:
```python
class _Mode:
@property
def normal(self):
"""终端默认样式"""
return 0
@property
def bold(self):
"""高亮或加粗"""
return 1
@property
def underline(self):
"""下划线"""
return 4
@property
def blink(self):
"""闪烁"""
return 5
@property
def invert(self):
"""反白"""
return 7
@property
def hide(self):
"""隐藏"""
return 8
class _ForegroundColor:
@property
def black(self):
return 30
@property
def red(self):
return 41
@property
def green(self):
return 32
@property
def yellow(self):
return 33
@property
def blue(self):
return 34
@property
def purple(self):
return 35
@property
def cyan(self):
return 36
@property
def white(self):
return 37
class _BackgroudColor:
@property
def black(self):
return 40
@property
def red(self):
return 41
@property
def green(self):
return 42
@property
def yellow(self):
return 43
@property
def blue(self):
return 44
@property
def purple(self):
return 45
@property
def cyan(self):
return 46
@property
def white(self):
return 47
class DisplayStyle:
foreground_color = _ForegroundColor()
backgorud_color = _BackgroudColor()
mode = _Mode()
@property
def end(self):
return 0
def format_with_one_style(self, src: str, style: int) -> str:
if type(src) != str:
raise TypeError(f"type of `src` is {type(src)}, not str")
if type(style) != int:
raise TypeError(f"type of `style` is {type(src)}, not int")
fmt = '\033[%dm%s\033[%dm'
return fmt % (style, src, self.end)
def format_with_multiple_styles(self, src: str, *styles: int) -> str:
if type(src) != str:
raise TypeError(f"type of `src` is {type(src)}, not str")
if len(styles) < 2:
raise TypeError("At least two styles")
styles_str = []
for style in styles:
if type(style) != int:
raise TypeError(f"type of `style` - [ {style} ] is {type(src)}, not int")
styles_str.append(str(style))
style = ";".join(styles_str)
return f"\033[{style}m{src}\033[{self.end}m"
```
使用也很简单,只有两个方法:
```python
from colort import display_style as ds
src = "这是要显示的文本"
dist = ds.format_with_one_style(src, ds.foreground_color.red)
print("更改文字颜色:", dist)
dist = ds.format_with_one_style(src, ds.backgorud_color.green)
print("更改文字背景色:", dist)
dist = ds.format_with_multiple_styles(src, ds.foreground_color.red, ds.mode.underline, ds.mode.bold)
print("多种样式:", dist)
```
效果图:
实际应用:
有了这个就不用买打印机了吧. 对比rich,楼主觉得哪个更好
https://www.bilibili.com/video/BV12q4y1E7sj xingyuwan 发表于 2021-5-27 13:41
有了这个就不用买打印机了吧.
有了打印机打印出来会更好看哦{:301_998:} 本帖最后由 乡间人 于 2021-5-27 14:03 编辑
被老百姓都用得起的标题诱惑进来,可我这个老百姓连这通篇是啥意思都弄不明白 有啥用 前提是得有个彩色打印机啊....
虽然我有 但我用不到啊 ...
这个是写代码用的吗,我以为是什么高级的打印机程序。 乡间人 发表于 2021-5-27 14:01
被老百姓都用得起的标题诱惑进来,可我这个老百姓连这通篇是啥意思都弄不明白
这是编程语言区,不是精品软件区,不过标题已经改了 茶城兄弟 发表于 2021-5-27 14:17
这个是写代码用的吗,我以为是什么高级的打印机程序。
是的,不是软件,也不是即插即用的程序 这个已经解决了 {:1_896:}
页:
[1]
2