2016-11-23 140 views
0

我有一個非常簡單的Python +2.7文件,其中包含以下代碼(當在終端中運行時)爲兩個字符串打印輸出ANSI顏色代碼。Python無法爲終端輸出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

+0

您沒有使用UTF8這裏,它都是ASCII。但是這應該會讓它更有可能發揮作用。 –

回答

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)) 
+0

所有這些都將刪除轉義序列和字符串之間的空白。我懷疑這會有什麼不同。 –

+0

不要再懷疑了,我粘貼了一個測試過的代碼;) – ArmenB

+0

奇怪的是,這隻能打印第二條錯誤消息的顏色:http://imgur.com/Iut240P – Xeoncross

1

-quotes和 -quotes在大多數其他語言不同。不是python。下面是屏幕截圖示出了腳本應該有工作(或許OP已申請一些調色板如solarized這是令人困惑的東西—有可能重新分配這些顏色中的任模仿xterm的一個終端上):

double-quotes

single-quotes

下面是從xterm的所謂的彩色立方體(你可能已經看到):

xterm color-cube

和(某些終端仿真器來晚了黨),任何實現xterm的控制序列可以重新編程,這樣使用逆轉顏色:

reversed color-cube

+0

嗯...你意識到前兩行工作正常嗎? – Xeoncross

+0

而第三個也有效。嘗試一下。 –

+0

以下是截圖:http://imgur.com/a/fcWQs如果這是單引號或雙引號問題,則前兩個打印件中的一個會失敗。 – Xeoncross