perl的是否有任何python等价物
print color 'red';
print <something>;
print color 'reset';
Run Code Online (Sandbox Code Playgroud)
在python中可用?
我知道解决方案;
"\x1b[1;%dm" % (<color code>) + "ERROR: log file does not exist" + "\x1b[0m"
Run Code Online (Sandbox Code Playgroud)
我想要的是我应该能够为所有打印消息设置颜色,比如
print color 'red'
function_print_something(<some message>)
print color 'reset'
Run Code Online (Sandbox Code Playgroud)
这里'function_print_something'是我的python函数,它会将一些格式化的日志消息打印到屏幕上.
zdi*_*dim 80
请问Python的termcolor模块呢?对于某些用途,这将是一个粗略的等价物.
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
Run Code Online (Sandbox Code Playgroud)
这个例子正好来自这篇文章,其中还有很多内容.以下是docs示例的一部分
import sys
from termcolor import colored, cprint
text = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])
print(text)
cprint('Hello, World!', 'green', 'on_red')
Run Code Online (Sandbox Code Playgroud)
一个特定的要求是设置颜色,并且可能是其他终端属性,以便所有后续打印都是这样的.虽然我在原帖中说过这个模块可以实现,但我现在不这么认为.有关这种方法,请参见最后一节.
但是,大多数情况下,我们用彩色,一行或两行打印短段文本.因此,这些示例中的界面可能比"打开"颜色,打印然后将其关闭更合适.(就像在Perl示例中所示.)Perhaphs你可以在打印函数中添加可选参数以便为输出着色,并在函数中使用模块的函数为文本着色.这也可以更轻松地解决格式化和着色之间的偶然冲突.只是一个想法.
以下是设置终端的基本方法,以便使用给定的颜色,属性或模式呈现所有后续打印.
一旦将适当的ANSI序列发送到终端,就会以这种方式呈现所有后续文本.因此,如果我们希望将来打印到此终端的所有文本都是明亮/粗体红色,则打印ESC[后跟"亮"属性(1)和红色(31)的代码,然后是m
# print "\033[1;31m" # this would emit a new line as well
import sys
sys.stdout.write("\033[1;31m")
print "All following prints will be red ..."
Run Code Online (Sandbox Code Playgroud)
要关闭任何先前设置的属性,请使用0作为属性\033[0;35m(洋红色).
要在python 3中使用抑制新行print('...', end="").剩下的工作是将其包装用于模块化使用(并且更容易消化).
文件colors.py
RED = "\033[1;31m"
BLUE = "\033[1;34m"
CYAN = "\033[1;36m"
GREEN = "\033[0;32m"
RESET = "\033[0;0m"
BOLD = "\033[;1m"
REVERSE = "\033[;7m"
Run Code Online (Sandbox Code Playgroud)
我建议您快速阅读一些有关代码的参考资料.可以组合颜色和属性,并且可以在此包中放置一个很好的列表.一个脚本
import sys
from colors import *
sys.stdout.write(RED)
print "All following prints rendered in red, until changed"
sys.stdout.write(REVERSE + CYAN)
print "From now on change to cyan, in reverse mode"
print "NOTE: 'CYAN + REVERSE' wouldn't work"
sys.stdout.write(RESET)
print "'REVERSE' and similar modes need be reset explicitly"
print "For color alone this is not needed; just change to new color"
print "All normal prints after 'RESET' above."
Run Code Online (Sandbox Code Playgroud)
如果常数使用的sys.stdout.write()是一个麻烦可以被包裹在一个微小的功能,或包变成一类与设置终端行为(印刷ANSI码)的方法.
上面的一些更多是建议查找,如组合反向模式和颜色.(这在问题中使用的Perl模块中可用,并且对顺序和类似也很敏感.)
很容易找到一个方便的转义码列表,虽然有很多关于终端行为的引用以及如何控制它.ANSI转义码的Wiki页面包含所有信息,但需要一些工作才能将它们组合在一起.Bash提示页面上有许多特定的有用信息.这是另一个包含直接代码表的页面.还有更多.
这可以和像这样的模块一起使用termocolor.
Kev*_*hou 18
相比这里列出的方法,我更喜欢系统自带的方法。在这里,我提供了一个更好的方法,无需第三方库。
class colors: # You may need to change color settings
RED = '\033[31m'
ENDC = '\033[m'
GREEN = '\033[32m'
YELLOW = '\033[33m'
BLUE = '\033[34m'
print(colors.RED + "something you want to print in red color" + colors.ENDC)
print(colors.GREEN + "something you want to print in green color" + colors.ENDC)
print("something you want to print in system default color")
Run Code Online (Sandbox Code Playgroud)
更多颜色代码,参考:Printing Colored Text in Python
玩的开心!
Rot*_*eti 13
我建议麦粒肿.它与colorama相似,但不那么冗长,它支持8bit和24bit颜色.您还可以使用自己的颜色扩展颜色寄存器.
from sty import fg, bg, ef, rs
foo = fg.red + 'This is red text!' + fg.rs
bar = bg.blue + 'This has a blue background!' + bg.rs
baz = ef.italic + 'This is italic text' + rs.italic
qux = fg(201) + 'This is pink text using 8bit colors' + fg.rs
qui = fg(255, 10, 10) + 'This is red text using 24bit colors.' + fg.rs
# Add custom colors:
from sty import Style, RgbFg
fg.orange = Style(RgbFg(255, 150, 50))
buf = fg.orange + 'Yay, Im orange.' + fg.rs
print(foo, bar, baz, qux, qui, buf, sep='\n')
Run Code Online (Sandbox Code Playgroud)
演示:
你可以用 python 3 试试这个:
from termcolor import colored
print(colored('Hello, World!', 'green', 'on_red'))
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 windows 操作系统,上面的代码可能不适合您。然后你可以试试这个代码:
from colorama import init
from termcolor import colored
# use Colorama to make Termcolor work on Windows too
init()
# then use Termcolor for all colored text output
print(colored('Hello, World!', 'green', 'on_red'))
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
138361 次 |
| 最近记录: |