progressbar.py 668 B

123456789101112131415161718192021
  1. import time
  2. def show_progress(command, step, total, since=None):
  3. progress = step * 100 / total
  4. filled = progress / 2
  5. blank = 50 - filled
  6. line = '\r%s%% [%s%s]'
  7. rendered_line = line % (str(progress).rjust(3), '=' * filled, ' ' * blank)
  8. if since:
  9. if step > 0:
  10. estimated_time = ((time.time() - since) / step) * (total - step)
  11. clock = time.strftime('%H:%M:%S', time.gmtime(estimated_time))
  12. rendered_line = '%s %s est.' % (rendered_line, clock)
  13. else:
  14. rendered_line = '%s --:--:-- est.' % rendered_line
  15. command.stdout.write(rendered_line, ending='')
  16. command.stdout.flush()