Python 2.7-不带外部库的进度栏

时间:2018-07-10 13:47:45

标签: python python-2.7 progress-bar normalize

我有一个python函数,可以从某些传感器数据文件中提取图像。该功能循环遍历图像并顺序提取它们。

传感器数据文件中大约有25000张图像。该号码不是固定的。但是我有一个变量,可以动态存储消息/图像的数量。

我想不使用任何外部库来设计进度条。进度条的打印百分比以“#”字符完成,类似于:

  

进度53%:########################

如何标准化1-100%之间的图像数量?

1 个答案:

答案 0 :(得分:0)

让百分比在IDLE内部运行时,实际上没有一种很好的方法(因为空闲不支持任何清除或\b)。

因此,我只是将其设置为可视进度条:

from __future__ import print_function
import time

class Progress():
    def __init__(self, total_images):
        self.total_images = total_images
        self.bar_width = 5
        self.previous = 0
        self.prompt = "Progress: "
        print(self.prompt, end='')

    def update(self, image_number):
        percentage = float(image_number) / total_images
        number_of_ticks = percentage * self.bar_width
        delta = int(number_of_ticks - self.previous)
        self.previous = int(number_of_ticks)
        if delta > 0:
            print("#" * delta, end='')

total_images = 10
progress_bar = Progress(total_images)
for current_image in range(1, total_images+1):
    progress_bar.update(current_image)
    time.sleep(.1)

输出

Progress: #####

如果您想要更长的条,则可以修改self.bar_width属性。 (可选)您可以将所有这些添加为参数,但是我不确定您认为哪些有用。