我正在使用tqdm在Jupyter笔记本上运行的脚本中打印进度。我正在通过tqdm.write()将所有消息打印到控制台。然而,这仍然给我一个倾斜的输出,如下所示:

也就是说,每当需要打印新的一行时,下一行就会打印一个新的进度条。当我通过终端运行脚本时,这不会发生。我怎么解决这个问题?


当前回答

使用tqdm_notebook

from tqdm import tqdm_notebook as tqdm

x=[1,2,3,4,5]

for i in tqdm(range(0,len(x))):

    print(x[i])

其他回答

TQDM自动加载合适的进度条,无论是普通代码或交互环境通过

from tqdm.auto import tqdm

为了完成oscarbranson的回答:根据进度条的运行位置,可以自动选择控制台或笔记本版本的进度条:

from tqdm.autonotebook import tqdm

更多信息可以在这里找到

使用tqdm_notebook

from tqdm import tqdm_notebook as tqdm

x=[1,2,3,4,5]

for i in tqdm(range(0,len(x))):

    print(x[i])

大多数答案现在都过时了。最好正确地导入tqdm。

from tqdm import tqdm_notebook as tqdm

如果这里的其他技巧不起作用,并且—就像我一样—您正在通过progress_apply使用pandas集成,您可以让tqdm处理它:

from tqdm.autonotebook import tqdm
tqdm.pandas()

df.progress_apply(row_function, axis=1)

这里的要点在于tqdm。autonotebook模块。正如他们在IPython笔记本中使用的说明中所述,这使得tqdm在Jupyter笔记本和Jupyter控制台中使用的进度条格式之间进行选择——出于我方面还缺乏进一步调查的原因,tqdm选择的具体格式。autootebook在pandas中工作得很顺利,而其他所有的都不能,特别是progress_apply。