如何在Unix上运行的Python脚本输出中显示ANSI颜色
我有一个简单的Python脚本,它使用ANSI转义序列来让终端的输出显示颜色。
这个方法效果很好,但当输出在其他地方使用时(比如在VIM编辑器里),所有的ANSI序列都会显示出来,这样就让内容变得很难阅读。
举个例子,如果我想显示红色,我会这样做:
^[[91m Errors:
-------^[[0m
在终端里,这样的显示是非常清晰的。
我可以给我的Python命令行工具加一个选项,这样在处理输出时就不会显示这些字符,但我在想有没有办法可以实现有颜色的输出,而又不会影响到其他输出。
这个解决方案需要使用Python的标准库,或者不需要安装第三方库。
不过,如果这个方法在Windows上不管用,我也完全没问题 :)
2 个回答
1
看看这个回答,它正好回答了你想问的问题。
3
你可以使用 os.isatty
来检查 stdout
文件描述符,这个描述符可以通过在 sys.stdout
上调用 fileno
来获取。
补充:看起来文件也有一个 isatty
方法;所以你可以直接使用 sys.stdout.isatty()
,不需要使用 os
模块。