如何在迭代完成后删除tqdm中的进度条

28

我该如何完成这个存档?

from tqdm import tqdm    
for link in tqdm(links):
        try:
            #Do Some Stff
        except:
            pass  
print("Done:")  

结果:

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 111.50it/s]
Done:   

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4/4 [00:00<00:00, 111.50it/s]
Done:  

预期结果(显示状态栏但不将其打印到控制台)

Done:  
Done: 
3个回答

45

tqdm 实际上需要传递多个参数,其中之一是 leave,根据 文档 的说明:

如果 [默认为True],在迭代结束后保留进度条的所有痕迹。如果为 None,则仅在位置为0时才会留下

因此:

>>> for _ in tqdm(range(2)):
...     time.sleep(1)
...
100%|██████████████████████████████████████████████████████| 2/2 [00:02<00:00,  1.01s/it]

如果设置leave=False会产生以下结果:

>>> for _ in tqdm(range(2), leave=False):
...     time.sleep(1)
...
>>>

2
你可以通过传递参数 disable=True 来禁用整个进度条包装器。
来源:https://pypi.org/project/tqdm/ 引用: disable: bool,可选 是否禁用整个进度条包装器[默认值:False]。如果设置为None,则在非TTY上禁用。
from tqdm import tqdm    
for link in tqdm(links,disable=True):
        try:
            #Do Some Stff
        except:
            pass  
print("Done:")  


0
我所做的只是使用随tqdm一起提供的.close()函数。一个使用案例的示例可以是解压过程。在这个示例中,它将来自下载并以原始字节形式存在。尽管那并不重要,因为你可以看到我使用pbar.close()停止了进度条,这也是你问题的另一个正确答案 :)
z = zipfile.ZipFile(io.BytesIO(dat), 'r')
total_size = len(dat)
extracted_size = 0
with z as zip_ref:
    file_list = zip_ref.namelist()
    total_files = len(file_list) + 1

    with tqdm.tqdm(total=total_size, unit='B', unit_scale = True, ascii=' █', desc='Extracting ' + name_of_lanModel[choosen_model]["name"],
                   colour='#b7d121', smoothing=0.01) as pbar:
        
        for file in file_list:
            extracted_file_path = zip_ref.extract(file, path)
            extracted_file_size = zip_ref.getinfo(file).file_size
            extracted_size += extracted_file_size
            pbar.update(extracted_file_size)
            if extracted_size >= total_size:
                break
    pbar.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接