progressbar.py 784 B

1234567891011121314151617181920212223
  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. progress_float = float(step) * 100.0 / float(total)
  10. if progress_float > 0:
  11. step_time = (time.time() - since) / progress_float
  12. estimated_time = (100 - progress) * step_time
  13. clock = time.strftime('%H:%M:%S', time.gmtime(estimated_time))
  14. rendered_line = '%s %s est.' % (rendered_line, clock)
  15. else:
  16. rendered_line = '%s --:--:-- est.' % rendered_line
  17. command.stdout.write(rendered_line, ending='')
  18. command.stdout.flush()