读取文件时 Python enumerate() tqdm 进度条?

新手上路,请多包涵

当我使用此代码迭代我打开的文件时,我看不到 tqdm 进度条:

         with open(file_path, 'r') as f:
        for i, line in enumerate(tqdm(f)):
            if i >= start and i <= end:
                print("line #: %s" % i)
                for i in tqdm(range(0, line_size, batch_size)):
                    # pause if find a file naed pause at the currend dir
                    re_batch = {}
                    for j in range(batch_size):
                        re_batch[j] = re.search(line, last_span)

在这里使用 tqdm 的正确方法是什么?

原文由 Wei Wu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

你在正确的轨道上。您正确使用了 tqdm,但在使用 tqdm 时没有打印循环内的每一行。您还需要在第一个 for 循环上使用 tqdm 而不是在其他循环上使用,如下所示:

 with open(file_path, 'r') as f:
    for i, line in enumerate(tqdm(f)):
        if i >= start and i <= end:
            for i in range(0, line_size, batch_size):
                # pause if find a file naed pause at the currend dir
                re_batch = {}
                for j in range(batch_size):
                    re_batch[j] = re.search(line, last_span)

此处 使用 枚举 及其在 tqdm 中的用法的一些注意事项。

原文由 Valentino Constantinou 发布,翻译遵循 CC BY-SA 4.0 许可协议

我也遇到了这个 问题——tqdm 没有显示进度条,因为没有提供文件对象中的行数。

for 循环将遍历行,读取直到遇到下一个换行符。

为了将进度条添加到 tqdm ,您首先需要扫描文件并计算行数,然后将其作为 total 传递给 tqdm

 from tqdm import tqdm

num_lines = sum(1 for line in open('myfile.txt','r'))
with open('myfile.txt','r') as f:
    for line in tqdm(f, total=num_lines):
        print(line)

原文由 user1446308 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题