1234567891011121314151617181920212223242526272829303132 |
- import time
- def show_progress(command, step, total, since=None):
- progress = step * 100 // total
- filled = progress // 2
- blank = 50 - filled
- template = "\r%(step)s (%(progress)s%%) [%(progressbar)s]%(estimation)s"
- variables = {
- "step": str(step).rjust(len(str(total))),
- "progress": str(progress).rjust(3),
- "progressbar": "".join(["=" * filled, " " * blank]),
- "estimation": get_estimation_str(since, progress, step, total),
- }
- command.stdout.write(template % variables, ending="")
- command.stdout.flush()
- def get_estimation_str(since, progress, step, total):
- if not since:
- return ""
- progress_float = float(step) * 100.0 / float(total)
- if progress_float == 0:
- return " --:--:-- est."
- step_time = (time.time() - since) / progress_float
- estimated_time = (100 - progress) * step_time
- clock = time.strftime("%H:%M:%S", time.gmtime(estimated_time))
- return " %s est." % clock
|