Чтобы определить, правильно ли установлена консоль sys.stderr
или sys.stdout
, я проводил следующий тест:
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
Теперь проблема стала более сложной при запуске этого кода Python через IDE (например, PyCharm). Недавно PyCharm добавил поддержку ANSI, но первый тест не пройден: у него есть атрибут isatty
, но он установлен на False
.
Я хочу изменить логику, чтобы она правильно определяла, поддерживает ли вывод раскраску ANSI. Одно из требований заключается в том, что ни при каких обстоятельствах я не должен выводить что-либо, когда вывод перенаправляется в файл (для консоли это будет приемлемо).
Обновление
Добавлен более сложный тестовый скрипт ANSI на https://gist.github.com/1316877