Python无法为终端输出ANSI颜色代码
我有一个非常简单的python+2.7文件,其中包含以下代码(在终端中运行时)为两个字符串打印输出ANSI颜色代码Python无法为终端输出ANSI颜色代码,python,python-2.7,terminal,ansi-colors,Python,Python 2.7,Terminal,Ansi Colors,我有一个非常简单的python+2.7文件,其中包含以下代码(在终端中运行时)为两个字符串打印输出ANSI颜色代码 # coding=utf8 class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' print "\033[95mWorks
# coding=utf8
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
print "\033[95mWorks fine\033[0m"
print '\033[95mWorks fine\033[0m'
print bcolors.OKBLUE, "Fails to work", bcolors.ENDC
为什么第三个打印语句无法在终端中生成任何颜色?关于使用utf8文件,有什么我应该知道的吗
系统:ubuntu 16.04以下是一个有效的示例:
#!/usr/bin/python3
class ConsolePrint(object):
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def print_warning(self, msg):
print(self.WARNING + msg)
def print_error(self, msg):
print(self.FAIL + self.BOLD + msg)
def print_info(self, msg):
print(self.OKBLUE + msg)
if __name__ == "__main__":
cp = ConsolePrint()
cp.print_warning("WARNING print text {0}".format(100))
cp.print_error("ERROR print text {0}".format(200))
cp.print_info("INFO print text {0}".format(300))
下面是一个有效的示例:
#!/usr/bin/python3
class ConsolePrint(object):
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def print_warning(self, msg):
print(self.WARNING + msg)
def print_error(self, msg):
print(self.FAIL + self.BOLD + msg)
def print_info(self, msg):
print(self.OKBLUE + msg)
if __name__ == "__main__":
cp = ConsolePrint()
cp.print_warning("WARNING print text {0}".format(100))
cp.print_error("ERROR print text {0}".format(200))
cp.print_info("INFO print text {0}".format(300))
单引号和双引号在大多数其他语言中是不同的。不是python。下面是显示脚本应该工作的屏幕截图(可能OP应用了一些调色板,如solarized,这会混淆一些东西,在模仿xterm的终端上重新分配这些颜色中的任何一种都是可能的): 下面是xterm中的所谓颜色立方体(您可能已经看到): 而且(一些终端仿真器来晚了),任何实现xterm控制序列的东西都可以重新编程,就像使用相反的颜色:
单引号和双引号在大多数其他语言中是不同的。不是python。下面是显示脚本应该工作的屏幕截图(可能OP应用了一些调色板,如solarized,这会混淆一些东西,在模仿xterm的终端上重新分配这些颜色中的任何一种都是可能的): 下面是xterm中的所谓颜色立方体(您可能已经看到): 而且(一些终端仿真器来晚了),任何实现xterm控制序列的东西都可以重新编程,就像使用相反的颜色:
要解决问题,只需导入操作系统
并在代码开头添加os.system(“”
。要解决问题,只需导入操作系统并添加os.system(“”)
在代码的开头。所有这些操作将删除转义序列和字符串之间的空格。奇怪的是,这只会打印第二条错误消息的颜色:这只会删除转义序列和字符串之间的空格。奇怪的是,这只打印第二条错误消息的颜色:这里没有使用utf8,而是ASCII码。但这应该会使它更有可能工作。这里没有使用utf8,它都是ASCII码。但这会让它更有可能起作用。嗯。。。你知道前两行很好,对吗?这里是一个屏幕截图:如果这是单引号或双引号的问题,前两行中的一行将失败。按要求为蓝色。你的截图有些奇怪,因为94是蓝色的,95是洋红色的。这绝对是错误的。其他语言可能会区分单引号和双引号,但不会区分Python.Um。。。你知道前两行很好,对吗?这里是一个屏幕截图:如果这是单引号或双引号的问题,前两行中的一行将失败。按要求为蓝色。你的截图有些奇怪,因为94是蓝色的,95是洋红色的。这绝对是错误的。其他语言可能会区分单引号和双引号,但Python不会。