我正在尝试使用colorama打印彩色文本,但是当我编译exe并运行以下...
from colorama import Fore, Back, Style
print(Fore.RED + 'text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')
I get output of::
输出:
[31mtext
[0m
back to normal now
在编译为pyinstaller exe时是否可以打印颜色,或者这根本不可能?
答案 0 :(得分:8)
在Windows上,您必须使用colorama.init()
初始化Colorama(请参阅第二行):
from colorama import Fore, Back, Style
colorama.init()
print(Fore.RED + 'text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')
我已在cmd
和PowerShell
中测试了此代码,并生成了预期的彩色输出。
在Windows上,调用
init()
将从发送到stdout
或stderr
的任何文本中过滤ANSI转义序列,并将其替换为等效的Win32调用。在其他平台上,调用
init()
无效(除非您请求其他可选功能;请参阅下面的“Init Keyword Args”)。通过设计,这允许应用程序在所有平台上无条件地调用init()
,之后ANSI输出应该正常工作。
答案 1 :(得分:3)
Windows的cmd.exe不支持ANSI转义序列。
如果您希望cmd.exe本身解释这些主题,那么超级用户上的这个主题可能会有所帮助 http://superuser.com/questions/413073/windows-console-with-ansi-colors-handling/
所以纯粹的蜡笔可能无法在Windows的cmd.exe下运行。
但是根据colorama的文件
这样做的结果是提供了一个简单的跨平台API,用于从Python打印彩色终端文本,并且具有使用ANSI序列在Linux或Mac上生成彩色输出的现有应用程序或库的快乐副作用现在也可以在Windows上工作,只需调用colorama.init()。
尝试使用ConEmu。你或许可以做到这一点