繁体   English   中英

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

[英]Python fails to output ANSI color codes for the terminal

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

要解决您的问题,您只需要import os并在代码开头添加os.system("")

引号和引号在大多数其他语言中是不同的。 不是蟒蛇。 以下是显示脚本应该可以正常工作的屏幕截图(也许 OP 应用了一些调色板,例如Solarized ,这是令人困惑的事情 - 可以在模仿 xterm 的终端上重新分配这些颜色中的任何一种):

双引号

单引号

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

xterm 颜色立方体

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

反转颜色立方体

这是一个有效的示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM