【问题标题】:VSCode: ANSI Colors in TerminalVSCode:终端中的ANSI颜色
【发布时间】:2018-09-30 09:57:51
【问题描述】:

如何使用 python 在终端中以 ansi 颜色打印文本? 我有这段代码来测试一下什么代码对文字有什么影响:

for i in range(0, 55):
    print(f"\033[{i}mAt {i} THIS happens! \033[0m")

但我看到的只是:

←[0mAt 0 THIS happens! ←[0m
←[1mAt 1 THIS happens! ←[0m
←[2mAt 2 THIS happens! ←[0m
←[3mAt 3 THIS happens! ←[0m
←[4mAt 4 THIS happens! ←[0m
...

It works as intended in the online editor repl.it.

我知道主题设置中有terminal.ansi 颜色,但我如何访问它们?

【问题讨论】:

    标签: python python-3.x visual-studio-code ansi


    【解决方案1】:

    我会使用 colorama 包来支持 Windows 上的 ANSI 序列。

    import colorama
    colorama.init()
    
    # your code with ansi sequences here
    

    编辑:此方法与平台无关(不会在支持它们的终端上修改 ANSI 序列),并允许您在字符串中使用原始 ANSI 序列,并为您提供颜色定义。

    【讨论】:

      【解决方案2】:

      转义序列会因终端而异,如果 stdout 不是 tty,你会觉得很奇怪。

      不依赖这些序列而将颜色打印到终端的最简单方法是使用blessings package。以下将以红色打印hello,以绿色打印world(例如):

      from blessings import Terminal
      term = Terminal()
      print(term.red("hello"), term.green("world"))
      

      【讨论】:

      • 你是绝对正确的。有一个名为 tput(Terminal Put)的旧 Unix 实用程序,可以从 shell 脚本中使用它来查找适合您的终端的转义序列(根据您的 TERM 环境设置)。但这是一个古老而难以理解的混乱。 linux.101hacks.com/ps1-examples/prompt-color-using-tput 底层的祝福和 Python 中的类似模块指的是 C 中相同的 terminfo 或 termcap API。
      猜你喜欢
      • 1970-01-01
      • 2021-01-14
      • 2014-09-26
      • 1970-01-01
      • 2019-07-03
      • 2017-04-06
      • 1970-01-01
      • 2018-10-11
      • 2023-01-14
      相关资源
      最近更新 更多