Cli Progressbar
It’s a lightweight and easy to use progress-bar for
command-line/terminal applications.
Install
pip install cli-progressbar
Features
- Simple, Lightweight and Easy to use.
- Single progress bar mode.
- Multiple progress bar mode.
- Custom bar characters.
- iterate function to auto handle progress bar in
for
loops.
Usage
Single mode
.. code:: python
from cli_progressbar import Progress
# define progressbar instance
progressbar = Progress(85)
# start function pass 0 to update function and print progressbar
# you can pass an string to show as status
progressbar.start('start status')
users = find_users() # return a list of users
# you can fill goal like this
progressbar.goal = len(users)
for i, user in enumerate(users):
# this function will update progressbar with new data and status
progressbar.update(i, 'processing status')
# Do your stuff
# stop function pass goal itself to update function
progressbar.stop('stop status')
But it’s boaring… so use ``iterate`` function:
.. code:: python
from cli_progressbar import Progress
progressbar = Progress()
progressbar.start('start status')
users = find_users()
for user in progressbar.iterate(users, 'processing status'):
# Do your stuff
progressbar.stop('stop status')
**iterate** function also support dynamic status, by passing a function
and each element of list as it input.
.. code:: python
for user in progressbar.iterate(users, lambda user: 'processing ' + user):
# Do your stuff
Multiple mode
.. code:: python
from cli_progressbar import Progress, MultiProgressManager
define multi progress instance
manager = MultiProgressManager()
now define any progress bar you need
progress_1 = Progress()
progress_2 = Progress()
now add them to multi progress manager
manager.append(progress_1)
manager.append(progress_2)
Done! It's ready to use like a single progress!
progress_1.start('start progress 1')
progress_2.start('start progress 2')
for i in progress_1.iterate(range(8), 'state progress 1'):
for j in progress_2.iterate(range(5), 'state progress 2'):
# Do your stuff
progress_1.stop('stop progress 1')
progress_2.stop('stop progress 2')
But maybe you want it more simple, so I have an easier solution!
.. code:: python
from cli_progressbar import MultiProgressManager
define multi progress instance; but this time, pass 2 arguments
manager = MultiProgressManager(
progress_count=2, # default: 0
progress_prefix='progress_' # default: progress_
)
now you can access 2 progressbar, just request them from manager
manager.progress_1.start('start progress 1')
manager.progress_2.start('start progress 2')
for i in manager.progress_1.iterate(range(8), 'state progress 1'):
for j in manager.progress_2.iterate(range(5), 'state progress 2'):
# Do your stuff
manager.progress_1.stop('stop progress 1')
manager.progress_2.stop('stop progress 2')
Parameters
goal
to change goal in between of process, it’s useful for
dynamic tasksbar_len
length of progress bar (default: 60)fill
bar fill symbol (default: █)zfill
bar zero fill symbol (default: -)decimals
positive number of decimals in percent complete
(default: 1)
Any Questions? Report a Bug? Enhancements?
Please open a new issue on
GitHub <https://github.com/mrunderline/cli-progressbar/issues>
__
License
CLI-ProgressBar is OpenSource and licensed under the terms of The MIT License (X11) <http://opensource.org/licenses/MIT>
. You’re welcome to
contribute <https://github.com/mrunderline/cli-progressbar/blob/master/CONTRIBUTE.md>
!
Version 1.1.0
- Add
MultiProgressManager
class