ANSI 转义码不适用于 IDLE... (python)

ANSI escape codes not working on IDLE... (python)

我正在制作一个涉及 ANSI escape codes, and they were all working fine on replit 的程序,直到我切换回 IDLE(两者均为 3.9)。但它不起作用:

它应该看起来像这样:

我之前看过几篇帖子抱怨说 IDLE 不支持这些转义序列,因为它不是终端,所以我尝试直接从 进行操作,但仍然是野兽般的符号出现了,这次是一个带框的问号:

我知道它不会直接从 IDLE 运行,所以我想知道您是否可以将 之类的软件导入 python?

虽然 Powershell 可以工作...

P.S。请不要告诉我导入 colorama 之类的东西!我真的希望这成为方式。我也没有立即访问 iPython(即使我想)所以这对我来说不是一个真正的选择......除非我必须 :D

编辑: 我放在 python 程序中的代码:

import sys, os

os.system("")

CSI = f"{chr(0x1B)}["

print(f"""{CSI}3m{CSI}1m{CSI}4m{CSI}31m
look at this""")

sys.stdout.flush() 

# I put the sys.stdout.flush() and os.system("") to try and fix the problem...

IDLE shell 不是终端仿真器,也不打算用作生产环境。到目前为止的决定是应该向程序开发人员展示他们程序的输出,而不是解释。这在未来可能会改变,但还没有最终决定。

如果您使用 Windows,我相信它的控制台可以设置为 ANSI 模式,但 Python 不会为您这样做。不知道程序代码能不能做到。

据我所知,没有包装程序可以将 mintty 变成可导入的 python 模块。这没有多大意义。相反,您可能想要打开 mintty 或基于 mintty 的终端仿真器,例如 git bash,并在该终端而不是 CommandPrompt 中打开 python。

第二个问题:

我可以做一个 red/green/etc 吗?每个字符的字体并将其设置为print('...', file=...)?这应该是可能的,因为存在彩色表情符号。

它应该可以工作,但我想知道如何(如果可能的话)使用某个程序自动执行此操作,该程序生成一个包含这些字符的文件并使用前面的 语句显示它们。

干杯!

ANSI 代码是一个广义术语。您必须指定您正在使用的代码页。例如,我的 Windows 是简体中文。因此,如果我想从 Python 中的默认 UTF-8 转义,我会将 # coding : cp936 放在脚本的第一行或第二行。然后就可以读写简体中文编码的文本文件了。