2017-09-24 234 views
-1

在Windows打印中,Python打印不能像預期的ANSI顏色代碼那樣工作,直到subprocess.call()中的shell = True一次。Python ANSI顏色代碼

在下面的鏈接中,它暗示着ANSI顏色代碼應該使用「打印」命令開箱即用。

How to print colour/color in python? Print in terminal with colors using Python?

第二個提到VT100仿真...不知道究竟是什麼意思。我可以編寫一個輸出顏色的批處理文件,所以我會(天真地)認爲它應該在Python中以相同的方式工作。

但是我不能,因爲它似乎ESC字符被「註釋掉」(?),因爲例如,當我

print(u"\u001b[31mHelloWorld") 

我無法看到使用ANSI顏色代碼因爲ESC字符在Windows中似乎是必需的,並且在Python shell中以「[?]」打印(帶有問號的框)

有沒有我在這裏丟失的東西?

回答

0

我發現自己是一個答案。通常情況下,我只是看起來不夠。

的COLORAMA模塊可以與

py -m pip install colorama

被安裝,並帶有一個方法定義在模塊的根稱爲init

colorama.init()

這是一個跨平臺功能在它只對窗口有用(它保存反轉的活動終端狀態並寫入終端以預處理ANSI代碼),它什麼也不做f或其他操作系統。

我在考慮使用ctypes實現一個更輕量級的解決方案,並且自己在活動終端上設置Interpret標誌。

如果您有興趣瞭解更多信息,請參見這裏:

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

輸出序列 以下末端序列由控制檯主機攔截時寫入到輸出流,如果ENABLE_VIRTUAL_TERMINAL_PROCESSING標誌在屏幕緩衝區句柄上使用SetConsoleMode標誌設置。請注意DISABLE_NEWLINE_AUTO_RETURN標誌在仿真其他終端仿真器的光標定位和滾動行爲時,也可能對寫入任何行最後一列的字符有用。

強調我的。