0

我认为我的问题与这个问题平行

我正在使用 termcolor 来格式化终端文本。termcolor基本上只是将您的字符串包装在终端然后解释的ANSI代码中。片段

from termcolor import cprint

cprint('Hello, World!', 'green', attrs=['bold'])

绿色文字

工作正常,但导入 tqdm 会导致白色文本:

from tqdm import tqdm
from termcolor import cprint
cprint('Hello, World!', 'green', attrs=['bold'])

白色文字

ANSI 代码仍然存在,但终端不再解析它们。

tqdm不幸的是,在我的包裹中根深蒂固,所以我不能只是摆脱导入。程序包对改变行为的终端做了什么,我如何在需要时禁用它?

在 Windows 10 上使用 python 3.5、tqdm 4.15、PyCharm 2017.2.3

4

1 回答 1

1

问题不是 with tqdm,而是 with coloramawhich 在内部使用。colorama.init()在 Windows / PhCharm 上,该方法存在已知问题(请参阅https://youtrack.jetbrains.com/issue/PY-16927,https://github.com/tartley/colorama/issues/79

幸运的是,只要您使用.init(strip=False)一切都可以正常工作,并且colorama人们提供了一种方便的.deinit()方法来反转tqdm导入时的任何用途。以下作品:

from tqdm import tqdm
import colorama
from termcolor import cprint

colorama.deinit()
colorama.init(strip=False)
cprint('Hello, World!', 'green', attrs=['bold'])
于 2017-09-27T17:56:03.743 回答