miniarchiver/progress_meter.py

37 lines
1.2 KiB
Python

import sys
class ProgressBar:
def __init__(self, num_elements):
self.num_elements = num_elements
self.current_element = 0
def show(self, msg=''):
total_blocks = 10
blocks_done = ((self.current_element * total_blocks)
// self.num_elements)
blocks_to_go = total_blocks - blocks_done
print('\r' # Go to the start of the line
'\x1b[K' # Clear line
'\x1b[0m' # Restart the "style"
'\x1b[?7l' # Disable line wrapping
'|' # Put the first "|"
+ blocks_done * '' # Completed blocks
+ blocks_to_go * ' ' # Uncompleted blocks
+ '\x1b[7m|\x1b[0m' # End the bar
+ ' '
+ msg # Add message
+ '\x1b[?7h' # Enable line wrapping
+ '\r', # Go back to the start
end='')
def next_iter(self, msg=''):
self.current_element += 1
self.show(msg)
def clean(self):
print('\r' # Go to the start of the line
'\x1b[K' # Clear line
'\x1b[0m', # Restart the "style"
end='')