Python 确定当前Linux控制台是否支持256色?

Python 确定当前Linux控制台是否支持256色?,python,linux,colors,console,Python,Linux,Colors,Console,有没有办法检查“当前”控制台在Linux下是否支持256色Python 我特别不想使用诅咒。正如评论中所讨论的,正确的解决方案是使用诅咒 没有可移植的方法来检测控制台或终端是否支持256色,因为没有通用的支持接口来询问这个问题。这与当用户按下功能键或箭头键时,无法查询终端将发送什么字符完全相同。有标准和约定,但基本上双方都需要依赖使用相同接口的另一方 curses的工作方式是,它有一个大型可配置的终端数据库,并在该数据库中查找特定终端的功能以了解其功能。curses不会检测连接的终端的类型,它通

有没有办法检查“当前”控制台在Linux下是否支持256色Python


我特别不想使用诅咒。

正如评论中所讨论的,正确的解决方案是使用诅咒


没有可移植的方法来检测控制台或终端是否支持256色,因为没有通用的支持接口来询问这个问题。这与当用户按下功能键或箭头键时,无法查询终端将发送什么字符完全相同。有标准和约定,但基本上双方都需要依赖使用相同接口的另一方


curses的工作方式是,它有一个大型可配置的终端数据库,并在该数据库中查找特定终端的功能以了解其功能。curses不会检测连接的终端的类型,它通常从术语环境变量中获取,该变量通常由知道或被告知实际连接的终端是什么的东西设置,例如getty,或者ssh或telnet服务器从客户端协商它。

为什么不使用curses?嗯,curses是标准的,通常是诅咒带来了terminfo数据库的终端功能。为什么要使用其他可能仍然使用诅咒的东西,或者数据文件依赖于诅咒的东西?@Anonymouse是对的。由于大多数linux系统上的terminfo/termcap数据库都随ncurses提供,因此使用其他方法需要在您想要支持的每个终端上编译您自己的数据。因为你只需要一段信息,所以你可以保持一个dict:terminal_colors={'vt52':2'vt100':2'vt320':2}-1这就像问我有一个钉子,我需要把它放进一块木头里。但我不想使用锤子,因为我只拥有我绝对需要的工具。没有锤子!如果你有充分的理由不使用诅咒,那将是另一回事,我们可以帮助你解决这个问题。但我不想这不是个好理由。那太好了,谢谢。完美地回答了我的问题。@funk:那么接受答案,非便携设备呢;-感谢你的帮助,查尔斯。谢谢你。我仍然觉得有办法做到这一点。。。。当我放弃时/如果我放弃,我会发回…@TedSchmuck:我真的不明白你想去哪里。据推测,从理论上讲,您可以将自己限制在支持的控制台上,这些控制台有一个可以查询颜色支持的界面,但我从来没有听说过这样的界面,因此假设您有256种颜色支持,限制性可能会小一些。当然,你的下一个问题将立即是确定你需要什么转义序列来操纵颜色。哦,我已经做过了。色彩运动和动画都完成了,只是想弄清楚如何实现它。。。我“边走边编码”——用外行的话来说,这意味着我一点也不知道。仅仅因为两台控制台支持256色并不意味着它们将使用相同的转义码。如果您不打算假设256色支持,那么假设一组特定的转义码适用于所有256色控制台是没有意义的。
>>> import curses
>>> curses.setupterm()
>>> curses.tigetnum("colors")
... 8