import time def show_progress(command, step, total, since=None): progress = step * 100 // total filled = progress // 2 blank = 50 - filled line = '\r%s%% [%s%s]' rendered_line = line % (str(progress).rjust(3), '=' * filled, ' ' * blank) if since: progress_float = float(step) * 100.0 / float(total) if progress_float > 0: step_time = (time.time() - since) / progress_float estimated_time = (100 - progress) * step_time clock = time.strftime('%H:%M:%S', time.gmtime(estimated_time)) rendered_line = '%s %s est.' % (rendered_line, clock) else: rendered_line = '%s --:--:-- est.' % rendered_line command.stdout.write(rendered_line, ending='') command.stdout.flush()