简介
Python的Colorama模块,可以跨多终端,显示字体不同的颜色和背景,只需要导入colorama模块即可,不用再每次都像linux一样指定颜色。
1. 安装colorama模块
1
|
pip install colorama
|
2. 常用格式常数
Fore是针对字体颜色,Back是针对字体背景颜色,Style是针对字体格式
1
2
3
|
Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
Style: DIM, NORMAL, BRIGHT, RESET_ALL
|
注意,颜色RED,GREEN都需要大写,先指定是颜色和样式是针对字体还是字体背景,然后再添加颜色,颜色就是英文单词指定的颜色
1
2
3
4
5
6
|
from
colorama
import
Fore, Back, Style
print
(Fore.RED
+
'some red text'
)
print
(Back.GREEN
+
'and with a green background'
)
print
(Style.DIM
+
'and in dim text'
)
print
(Style.RESET_ALL)
print
(
'back to normal now'
)
|
输出结果
1
2
3
4
|
# 记得要及时关闭colorma的作用范围
# 如果不关闭的话,后面所有的输出都会是你指定的颜色
print
(Style.RESET_ALL)
|
3.Init关键字参数:
init()接受一些* * kwargs覆盖缺省行为,
autoreset是自动恢复到默认颜色
1
|
init(autoreset
=
False
):
|
init(wrap=True):The default behaviour is to convert if on Windows and output is to a tty (terminal).
在windows系统终端输出颜色要使用init(wrap=True)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/usr/bin/env python
#encoding: utf-8
from
colorama
import
init, Fore, Back, Style
if
__name__
=
=
"__main__"
:
init(autoreset
=
True
)
# 初始化,并且设置颜色设置自动恢复
print
(Fore.RED
+
'some red text'
)
print
(Back.GREEN
+
'and with a green background'
)
print
(Style.DIM
+
'and in dim text'
)
# 如果未设置autoreset=True,需要使用如下代码重置终端颜色为初始设置
#print(Fore.RESET + Back.RESET + Style.RESET_ALL) autoreset=True
print
(
'back to normal now'
)
|
输出结果
4.使用实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
import
sys
import
os
import
random
import
string
from
colorama
import
Fore,Style,init
import
platform
def
print_arg(arg):
"""
打印参数
:param arg:
:return:
"""
for
ind, val
in
enumerate
(arg):
if
ind
=
=
0
:
print_color(Fore.YELLOW,r
"------执行%s输入参数为--------"
%
val)
else
:
print
(val, end
=
","
)
def
print_color(color, mes
=
""):
"""
获得系统平台
windows终端需要设置
init(wrap=True)
:param color:
:param mes:
:return:
"""
v_system
=
platform.system()
if
v_system !
=
'Windows'
:
print
(color
+
mes)
else
:
# init(wrap=True)
print
(color
+
mes)
# 获得系统参数
v_arg
=
sys.argv
init(autoreset
=
True
)
# 初始化,并且设置颜色设置自动恢复
# print_color(Fore.YELLOW+platform.system())
if
len
(v_arg) !
=
4
:
# print(platform.system())
print_arg(v_arg)
print_color(Fore.RED,
"---参数输入错误--"
)
print_color(Fore.RED,
"fileStrReplace.py 文件名 旧字符串 新字符串"
)
else
:
f_name
=
v_arg[
1
].strip()
old_str
=
v_arg[
2
].strip()
# 旧字符
new_str
=
v_arg[
3
].strip()
# 替换的新字符
f_new_name
=
"%s.new"
%
f_name
replace_count
=
0
# 字符替换次数
if
not
os.path.exists(f_name):
print_color(Fore.YELLOW,
"%s文件不存在"
%
f_name)
else
:
f_new
=
open
(f_new_name,
'w'
)
f
=
open
(f_name,
"r"
,)
for
line
in
f:
# 读取大文件
if
old_str
in
line:
new_line
=
line.replace(old_str, new_str)
# 字符替换
replace_count
+
=
1
else
:
new_line
=
line
f_new.write(new_line)
# 内容写新文件
f.close()
f_new.close()
if
replace_count
=
=
0
:
print_color(Fore.YELLOW,
"字符%s不存在"
%
(old_str))
else
:
bak_f
=
f_name
+
''.join(random.sample(string.digits,
6
))
os.rename(f_name, bak_f)
# 备份旧文件
os.rename(f_new_name, f_name)
# 把新文件名字改成原文件的名字,就把之前的覆盖掉了
print_color(Fore.GREEN,
"文件替换成功,[字符%s替换%s]共%s次,源文件备份[%s]"
%
(old_str,new_str, replace_count,bak_f))
# print_color(Style.RESET_ALL) # 还原默认颜色
|