tqdm进度条和colorama不能一起工作

时间:2017-03-29 15:01:49

标签: python tqdm colorama

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

示例:

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

没有tqdm它工作正常,但是如果我导入tqdm,colorama在重新启动控制台之前不会对文本着色。我使用Spyder的IPython控制台(Python 3.6)。

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

4 个答案:

答案 0 :(得分:2)

import colorama as color
import tqdm as tqdm 
import os

os.system('cls')
print(color.Fore.GREEN + 'Green text')
如果正在进行任何其他活动或您先前在终端上运行了

tqdm,则该命令将不起作用。

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

答案 1 :(得分:0)

尝试如下(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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

import sys
sys.stdout = sys.__stdout__

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