enlighten
Enlighten Progress Bar is a console progress bar module for Python. (Yes, another one.)
The main advantage of Enlighten is it allows writing to stdout and stderr without any redirection.
Installation
PIP
$ pip install enlighten
RPM
Fedora and EL8 (RHEL/CentOS)
(EPEL repositories must be configured for EL8)
$ dnf install python3-enlighten
EL7 (RHEL/CentOS)
(EPEL repositories must be configured)
$ yum install python2-enlighten
$ yum install python36-enlighten
PKG
Arch Linux
$ pacman -S python-enlighten
DEB
Debian and Ubuntu
$ apt-get install python3-enlighten
Examples
Basic
For a basic status bar, invoke the Counter class directly.
import time
import enlighten
pbar = enlighten.Counter(total=100, desc='Basic', unit='ticks')
for num in range(100):
time.sleep(0.1) # Simulate work
pbar.update()
Advanced
To maintain multiple progress bars simultaneously or write to the console, a manager is required.
Advanced output will only work when the output stream, sys.stdout
by default, is attached to a TTY. get_manager can be used to get a manager instance. It will return a disabled Manager instance if the stream is not attached to a TTY and an enabled instance if it is.
import time
import enlighten
manager = enlighten.get_manager()
ticks = manager.counter(total=100, desc='Ticks', unit='ticks')
tocks = manager.counter(total=20, desc='Tocks', unit='tocks')
for num in range(100):
time.sleep(0.1) # Simulate work
print(num)
ticks.update()
if not num % 5:
tocks.update()
manager.stop()
Counters
The Counter class has two output formats, progress bar and counter.
The progress bar format is used when a total is not None
and the count is less than the total. If neither of these conditions are met, the counter format is used:
import time
import enlighten
counter = enlighten.Counter(desc='Basic', unit='ticks')
for num in range(100):
time.sleep(0.1) # Simulate work
counter.update()