首页 文章

Python无法为终端输出ANSI颜色代码

提问于
浏览
0

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

2 回答

  • 1

    Single -quotes和 double -quotes在大多数其他语言中是不同的 . 不是python . 下面是截图显示脚本应该有效(也许OP已经应用了一些调色板,如曝光,这让人感到困惑 - 可以在模仿xterm的终端上重新分配任何这些颜色):

    double-quotes

    single-quotes

    这是xterm的所谓颜色立方体(您可能已经看过):

    xterm color-cube

    和(一些终端模拟器迟到了),任何实现xterm控制序列的东西都可以重新编程,就像使用反色一样:

    reversed color-cube

  • 0

    这是一个有效的例子:

    #!/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))
    

相关问题