繁体   English   中英

ANSI 转义码在 IDLE 上不起作用……(python)

[英]ANSI escape codes not working on IDLE… (python)

我正在制作一个涉及ANSI 转义码的程序,在我切换回 IDLE 之前,它们在repli上都运行良好(两者都为 3.9)。 但它不起作用:
闲置的
它应该看起来像这样:
复制

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

我知道它不会直接从 IDLE 工作,所以我想知道你是否可以将像这样的软件导入 python 中?

Powershell 工作虽然... 电源外壳图片

PS请不要告诉我导入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 不是终端仿真器,也不是生产环境。 到目前为止的决定是应该向程序开发人员展示他们的程序的 output 是什么,无需解释。 这可能会在未来发生变化,但还没有最终决定。

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

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

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

第二个问题:

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

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

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM