Printing with colors in a portable way
Jean-Michel Pichavant
jeanmichel at sequans.com
Mon Aug 3 06:46:45 EDT 2009
Nobody wrote:
> On Thu, 30 Jul 2009 15:40:37 -0700, Robert Dailey wrote:
>
>
>> Anyone know of a way to print text in Python 3.1 with colors in a
>> portable way? In other words, I should be able to do something like
>> this:
>>
>> print_color( "This is my text", COLOR_BLUE )
>>
>> And this should be portable (i.e. it should work on Linux, Mac,
>> Windows).
>>
>
> The way that terminals (and emulators) handle colour is fundamentally
> different from the DOS/Windows console. If you want something which will
> work on both, you will have write separate implementations for terminals
> and the DOS/Windows console.
>
> For terminals, you can use the "curses" package, e.g.:
>
> import curses
>
> curses.setupterm()
> setaf = curses.tigetstr('setaf')
> setab = curses.tigetstr('setab')
>
> def foreground(num):
> if setaf:
> sys.stdout.write(curses.tparm(setaf, num))
>
> def background(num):
> if setab:
> sys.stdout.write(curses.tparm(setab, num))
>
> For the Windows console, you'll need to use ctypes to interface to the
> SetConsoleTextAttribute() function from Kernel32.dll.
>
>
FYI
http://github.com/jbowes/markymark/blob/59511b36a752b40243cc18fb0fb9800c74549ac1/markymark.py
If the URL ever becomes invalid, then google for markymark.py
You can use it either to color your Linux/Unix terms, or you can just
look at the python code to see how to set colors and attributes.
JM
More information about the Python-list
mailing list