为了检测控制台是否正确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
现在,通过 IDE(如 PyCharm)运行此 Python 代码时,问题变得更加复杂。最近 PyCharm 添加了对 ANSI 的支持,但第一次测试失败:它有isatty
属性但设置为False
.
我想修改逻辑,以便正确检测输出是否支持 ANSI 着色。一个要求是,在任何情况下,当输出重定向到文件时,我都不应输出某些内容(对于控制台,这是可以接受的)。
更新
在https://gist.github.com/1316877添加了更复杂的 ANSI 测试脚本