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

发布于 2024-10-20 13:18:30 字数 387 浏览 1 评论 0原文

我有一个简单的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隐诗 2024-10-27 13:18:31

您可以将 os.isattystdout 文件描述符结合使用,可以通过在 sys.stdout 上调用 fileno 来检索该描述符>。

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

You can use os.isatty with the stdout file descriptor, which can be retrieved by calling fileno on sys.stdout.

Edit: It looks like files also have an isatty method; therefore, you can avoid using the os module and just using sys.stdout.isatty().

说好的呢 2024-10-27 13:18:31

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

如何检测 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?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文