Why does termcolor output control characters instead of colored text in the Windows console?

I just installed termcolor for Python 2.7 on Windows. When I try to print colored text, I get the color codes instead.

from termcolor import colored
print colored('Text text text', 'red')

Here is the result:

Screenshot of the Windows console window with the line: "←31mText text text←[0m"

I obtain the same results on Far Manager and when I tried to run the script as a standalone application.


To make the ANSI colors used in termcolor work with the windows terminal, you'll need to also import/init colorama;

>>> from termcolor import *
>>> cprint('hello', 'red')
←[31mhello←[0m
>>> import colorama
>>> colorama.init()
>>> cprint('hello', 'red')
hello                                    <-- in red color
>>>

windows command prompt uses a command to change the terminal output colour. you can execute the command 'color color-code' to change the color instantly. Just having the command color activates this color feature.

In short.. For your script to work, Run this at the start of your script.

import os
os.system('color')

In termcolor2 module you must type this:

import termcolor2
import colorama
colorama.init()

myText = input("Type a text : ")
color = input("What color you want? : ")

print(termcolor2.colored(myText, color))

That's it...


Did work :

inserting previous to importing termcolor:

import subprocess
subprocess.call('', shell=True)

Didn't work:

  1. importing colorama (didn't) fix problem - still shows characters
  2. importing / using termcolor2 (didn't) fix problem - still shows
    characters
  3. importing colorama AND termcolor2 AND termcolor (didn't) fix problem.

Can't explain why it works, only that I was able to compare one script that colors worked correctly, and one that didn't work correctly.