In order to detect if console, correctly sys.stderr or sys.stdout, I was doing the following test:
if hasattr(sys.stderr, "isatty") and sys.stderr.isatty():    if platform.system()=='Windows':        # win code (ANSI not supported but there are alternatives)    else:        # use ANSI escapes else:    # no colors, usually this is when you redirect the output to a file   Now the problem became more complex while running this Python code via an IDE (like PyCharm). Recently PyCharm added support for ANSI, but the first test fails: it has the isatty attribute but it is set to False. 
I want to modify the logic so it will properly detect if the output supports ANSI coloring. One requirement is that under no circumstance I should output something out when the output is redirected to a file (for console it would be acceptable).
Added more complex ANSI test script at https://gist.github.com/1316877
The \033 is the escape code, just like a \n or \r , but this is sending a hex value through to the terminal. 01:07 The left square bracket ( [ ) is a parameter, {code} will be the code we're displaying, which I'm going to pass in through the function, and then the m tells ANSI that it's done.
Django users can use django.core.management.color.supports_color function.
if supports_color():     ...   The code they use is:
def supports_color():     """     Returns True if the running system's terminal supports color, and False     otherwise.     """     plat = sys.platform     supported_platform = plat != 'Pocket PC' and (plat != 'win32' or                                                   'ANSICON' in os.environ)     # isatty is not always implemented, #6223.     is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()     return supported_platform and is_a_tty   See https://github.com/django/django/blob/master/django/core/management/color.py
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With