当前位置: 首页 > 知识库问答 >
问题:

如何在Windows10控制台中使用对ANSI转义序列的新支持?

邹慈
2023-03-14

最新的Windows10更新包括对conhost.exe中ANSI转义序列的支持。

我已经能够确认在cmd.exe中转义序列被正确地拾取,因此我有了必要的更新。特别是,我尝试键入prompt$E[?25L,它隐藏游标,然后键入prompt$E[?25H,它再次显示游标。

但是,如果我启动一个Python解释器,然后执行以下操作:

>>> import sys
>>> sys.stdout.write("\033[?25l")

共有1个答案

东方俊材
2023-03-14

问题是Python解释器不支持ANSI转义序列的处理。ANSI序列在Windows命令提示符下工作,因为cmd确实启用了它们。如果您从命令提示符启动Python,您会发现ANSI序列起作用,包括启用和禁用游标的序列。这是因为cmd已经为控制台窗口启用了它们。

如果您想要一些可以单击以启动启用ANSI转义的Python解释器的内容,则可以创建一个运行命令的快捷方式,例如cmd/cc:\pythonxy\Python

另一个更难的解决方案是使用ctypes为控制台窗口启用ANSI转义序列处理,方法是调用setConsoleModeWindows API并设置enable_virtual_terminal_processing标志。例如:

import ctypes

kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
 类似资料:
  • 问题内容: 这是我的字符串: 我正在使用代码从SSH命令检索输出,并且我希望我的字符串仅包含 如何删除多余的转义序列? 问题答案: 使用正则表达式删除它们: 或者,在没有VERBOSE标志的情况下,以压缩形式: 演示: 上面的正则表达式涵盖所有7位ANSI C1转义序列,但不包括8位C1转义序列打开器。后者在当今的UTF-8世界中从未使用过,在UTF-8世界中,相同范围的字节具有不同的含义。 如果

  • 问题内容: 当我在Chrome JavaScript Console中键入简单对象时,会得到如下输出: 等等。 但是当我键入对象时发生语法错误: 虽然我确定可以在初始化对象时正确使用此表达式,因为: 也许这是一个愚蠢的问题,但我真的想知道为什么会这样吗? 问题答案: 因为您的语句被视为一个 block ,而不是对象文字声明。 请注意,ExpressionStatement不能以大括号开头,因为这可

  • 随着最近苹果开发者帐号的升级,我面临的一个困难是,在尝试创建推送通知证书时,它提供给我的是(.p8)证书,而不是可以导出到(.p12)的APNs证书。 Firebase控制台只接受(.p12)证书,所以我如何从这些新的(.p8)证书中得到它。

  • 问题内容: 我尝试了很多方法,例如 和 而且转义序列也不起作用 问题答案: 所有你需要的是 :

  • 在航站楼如何做到这一点?

  • Sometimes it’s nice to work with your contracts interactively for testing and debugging purposes, or for executing transactions by hand. Truffle provides you two easy ways to do this via an interactiv