【问题标题】:Print cmd with colors用颜色打印 cmd
【发布时间】:2018-07-27 09:53:44
【问题描述】:

我正在尝试获取彩色命令行输出。我可以使用 colorama 获得彩色 Python 控制台输出:

from colorama import Fore
from colorama import Style

print(f'{Fore.GREEN}A')
print(f'{Fore.RED}B')
print('C')
print(f'{Style.RESET_ALL}D')
print('E')

这在 PyCharm 的 Python 控制台中完美运行。但是,如果我在 Windows cmd 下运行程序。根本没有颜色,只是添加了颜色文本,没有任何效果:

←[32mA
←[31mB
C
←[0mD
E

我可以修改代码使其在 Windows cmd 中也能工作吗?

【问题讨论】:

  • 您使用的是 Windows 10 以下的某个版本吗?
  • @user69453:是的,Win7。
  • 好的,因为如果您知道,您使用的是某个版本的 Windows 10,则不需要 colorama,因为 Windows 10 支持颜色的 ANSI 转义序列,如 this SO answer 中所述。

标签: python python-3.x colorama


【解决方案1】:

您需要将 convert=True 添加到您的 colorama 初始化调用中:

from colorama import Fore, Style, init

init(convert=True)

print(f'{Fore.GREEN}A')
print(f'{Fore.RED}B')
print('C')
print(f'{Style.RESET_ALL}D')
print('E')

【讨论】:

  • 谢谢。那确实奏效了。但是,它不再在 Python 控制台中工作了......有没有办法检测环境然后转换或不依赖?
  • 您应该可以查看psutil.Process(os.getpid()).parent().name()。不确定 Windows 的值是什么,但应该类似于 "cmd"
  • 太棒了!有了它,我就能让它工作了!谢谢!
  • 你也可以使用if "started_with_prompt" not in sys.argv:
【解决方案2】:

在 Jeremiah 的帮助下,我能够使其在 PyCharm 和 cmd 中运行。完整代码如下:

from colorama import Fore, Style, init
import psutil
import os

if psutil.Process(os.getpid()).parent().name() == 'cmd.exe':
    init(convert=True)

print(f'{Fore.GREEN}A')
print(f'{Fore.RED}B')
print('C')
print(f'{Style.RESET_ALL}D')
print('E')

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2011-03-07
    相关资源
    最近更新 更多