如何在 Unix 上运行的 python 脚本输出中显示 ANSI 颜色
我有一个简单的 Python 脚本,它使用 ANSI 转义序列在终端上显示彩色输出。
这很有效,但是当输出在其他地方使用时(例如在 VIM 中),所有 ANSI 序列都会显示出来,这使得它真的不可读。
例如,要显示红色,我会执行以下操作:
^[[91m Errors:
-------^[[0m
这在终端中完全可读。
我可以向我的 Python 命令行工具添加一个标志,以避免在需要处理输出时显示这些字符,但我想知道是否有一种方法可以在不弄乱输出的情况下获得彩色输出。
该解决方案必须使用 Python Stdlib,或者必须避免安装第三方库。
不过,如果该方法在 Windows 上不起作用,我也完全没问题:)
I have a simple Python script that uses ANSI escape sequences to have colored output on the terminal.
And this works great, but when the output is being used elsewhere (for example in VIM) all the ANSI sequences show up and it makes it really unreadable.
For example, to display RED I do something like:
^[[91m Errors:
-------^[[0m
Which is perfectly readable in the terminal.
I could add a flag to my Python command line tool to avoid displaying these characters when I need to deal with output, but I was wondering if there is a way of having colored output without messing up output.
The solution would have to use the Python Stdlib or would have to avoid installing a third party library.
However, I am perfectly OK if the approach doesn't work on Windows :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将
os.isatty
与stdout
文件描述符结合使用,可以通过在sys.stdout
上调用fileno
来检索该描述符>。编辑: 看起来文件也有一个
isatty
方法;因此,您可以避免使用 os 模块,而只使用 sys.stdout.isatty() 。You can use
os.isatty
with thestdout
file descriptor, which can be retrieved by callingfileno
onsys.stdout
.Edit: It looks like files also have an
isatty
method; therefore, you can avoid using theos
module and just usingsys.stdout.isatty()
.看看这个答案,它完全涵盖了您所要求的内容
如何检测 sys.stdout 是否连接到终端?
Look at this answer it covers exactly what you are asking for
How do I detect whether sys.stdout is attached to terminal or not?