7

我想使用 colorama,但我已经在我的代码中使用了 tqdm。

例子:

import colorama as color
import tqdm as tqdm  # without line it's working
print(color.Fore.GREEN + 'Green text')

没有 tqdm 也可以正常工作,但是如果我导入 tqdm,colorama 不会为文本着色,直到我重新启动控制台。我将 IPython 控制台与 Spyder(Python 3.6)一起使用。

有没有办法可以一起使用这些包?

4

4 回答 4

2

尝试如下(https://github.com/tqdm/tqdm/issues/450

from tqdm import trange
from colorama import Fore
for i in trange(int(7e7),
    bar_format="{l_bar}%s{bar}%s{r_bar}" % (Fore.GREEN, Fore.RESET)):
    pass
于 2017-10-19T09:20:28.187 回答
1
import colorama as color
import tqdm as tqdm 
import os

os.system('cls')
print(color.Fore.GREEN + 'Green text')

如果有任何其他活动正在进行或以前在您的终端上运行,则 tqdm 不起作用。

所以最好在代码开始时使用 os.system('cls') 清除终端屏幕。这对我来说很好。

于 2020-04-10T06:56:16.413 回答
0

我可以通过以下方式解决这个问题: import sys并在 imports 之后添加为第一行sys.stdout = sys.__stdout__

import sys
sys.stdout = sys.__stdout__

这会恢复颜色,也是tqdmworkint。我不使用 COLORAMA,但我直接使用 ansi 转义序列。
我尝试了这种方法,因为我读到tqdm将标准输出重定向到标准错误,并且它有效。
的值sys.__stdout__将是刚打开脚本时 stdout 的初始值。导入tqdm重定向它。:)

于 2021-02-13T00:36:26.513 回答
0

如果您在 tqdm 中包含“颜色”可选参数,它将使用该颜色作为进度条,然后使用下面的彩色文本,据我所知,它按预期打印,但并非每个文本都是彩色的。我还没有调查逻辑是什么,但是该参数会改变进一步的打印。

于 2021-02-03T23:23:40.830 回答