Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python无法为终端输出ANSI颜色代码_Python_Python 2.7_Terminal_Ansi Colors - Fatal编程技术网

Python无法为终端输出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

我有一个非常简单的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 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不会。