如何在Unix上运行的Python脚本输出中显示ANSI颜色

1 投票
2 回答
1148 浏览
提问于 2025-04-16 13:02

我有一个简单的Python脚本,它使用ANSI转义序列来让终端的输出显示颜色。

这个方法效果很好,但当输出在其他地方使用时(比如在VIM编辑器里),所有的ANSI序列都会显示出来,这样就让内容变得很难阅读。

举个例子,如果我想显示红色,我会这样做:

^[[91m Errors:
-------^[[0m

在终端里,这样的显示是非常清晰的。

我可以给我的Python命令行工具加一个选项,这样在处理输出时就不会显示这些字符,但我在想有没有办法可以实现有颜色的输出,而又不会影响到其他输出。

这个解决方案需要使用Python的标准库,或者不需要安装第三方库。

不过,如果这个方法在Windows上不管用,我也完全没问题 :)

2 个回答

1

看看这个回答,它正好回答了你想问的问题。

我怎么知道 sys.stdout 是否连接到终端?

3

你可以使用 os.isatty 来检查 stdout 文件描述符,这个描述符可以通过在 sys.stdout 上调用 fileno 来获取。

补充:看起来文件也有一个 isatty 方法;所以你可以直接使用 sys.stdout.isatty(),不需要使用 os 模块。

撰写回答