1

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

这很好用,但是当输出在其他地方(例如在 VIM 中)使用时,所有 ANSI 序列都会显示出来,这使得它真的不可读。

例如,要显示 RED,我会执行以下操作:

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

这在终端中是完全可读的。

我可以在我的 Python 命令行工具中添加一个标志,以避免在需要处理输出时显示这些字符,但我想知道是否有一种方法可以在弄乱输出的情况下进行彩色输出。

该解决方案必须使用 Python Stdlib,或者必须避免安装第三方库。

但是,如果该方法在 Windows 上不起作用,我完全可以 :)

4

2 回答 2

3

您可以使用os.isatty文件描述符stdout,它可以通过调用来fileno检索sys.stdout

编辑:看起来文件也有isatty方法;因此,您可以避免使用os模块而只使用sys.stdout.isatty().

于 2011-03-05T02:08:32.113 回答
1

看看这个答案,它完全涵盖了您的要求

如何检测 sys.stdout 是否连接到终端?

于 2011-03-05T02:09:40.210 回答