如何让tqdm进度条保持在终端底部?

问题描述 投票:0回答:1

这是代码

def download_from_dict(path_link_dict, folder)
    counter = 0
    for path, link, name in tqdm(path_link_dict):

        counter = counter + 1
        if os.path.isfile(folder + path + name):
            print('[ Already there! ] ' + name)
            continue

        if not os.path.isdir(folder + path):
            os.makedirs(folder + path)

        response = requests.get(link, headers=HEADERS)
        with open(folder + path + name, 'wb') as file:
            file.write(response.content)
        print('[*] Downloaded ' + name)

输出为

progress bar..
[*] Downloaded something..
Progress bar..
[*] Downloaded something

所需的输出(我希望该栏保留在终端的底部。)

[*] Downloaded something
[*] Downloaded something
[*] Downloaded something
progress bar..

我尝试使用tqdm函数的leave=False、position=0和barfmt..参数,但它不起作用 我也尝试过使用 在 [*] 下载之前,但该条比打印的语句长,因此它仅清除其中的一部分。 我已经查看了 tqdm 文档,但无法解决这个问题 你能帮忙吗?

python terminal printing carriage-return tqdm
1个回答
0
投票

这里不是一个简单直接的解决方案,但是在 stackoverflow 中关于如何针对之前的几个问题执行此操作有有趣的讨论和解决方案:通过 tqdm.write() 在 python 脚本中重定向打印命令使用 tqdm 的 python 进度条不停留在一行

这还取决于您是否在标准终端或 jupyter 笔记本或其他输出中需要它......

© www.soinside.com 2019 - 2024. All rights reserved.