我想使用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)。
有没有办法可以将这些包装在一起使用?
答案 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
会将其重定向。 :)