It's a lightweight and easy to use progress-bar for command-line/terminal applications.
pip install cli-progressbar
- 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
forloops.
fromcli_progressbarimportProgress# define progressbar instanceprogressbar=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 thisprogressbar.goal=len(users)
fori, userinenumerate(users):
# this function will update progressbar with new data and statusprogressbar.update(i, 'processing status')
# Do your stuff# stop function pass goal itself to update functionprogressbar.stop('stop status')But it's boaring... so use iterate function:
fromcli_progressbarimportProgressprogressbar=Progress()
progressbar.start('start status')
users=find_users()
foruserinprogressbar.iterate(users, 'processing status'):
# Do your stuffprogressbar.stop('stop status')iterate function also support dynamic status, by passing a function and each element of list as it input.
foruserinprogressbar.iterate(users, lambdauser: 'processing '+user):
# Do your stufffromcli_progressbarimportProgress, MultiProgressManager# define multi progress instancemanager=MultiProgressManager()
# now define any progress bar you needprogress_1=Progress()
progress_2=Progress()
# now add them to multi progress managermanager.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')
foriinprogress_1.iterate(range(8), 'state progress 1'):
forjinprogress_2.iterate(range(5), 'state progress 2'):
# Do your stuffprogress_1.stop('stop progress 1')
progress_2.stop('stop progress 2')But maybe you want it more simple, so I have an easier solution!
fromcli_progressbarimportMultiProgressManager# define multi progress instance; but this time, pass 2 argumentsmanager=MultiProgressManager(
progress_count=2, # default: 0progress_prefix='progress_'# default: progress_
)
# now you can access 2 progressbar, just request them from managermanager.progress_1.start('start progress 1')
manager.progress_2.start('start progress 2')
foriinmanager.progress_1.iterate(range(8), 'state progress 1'):
forjinmanager.progress_2.iterate(range(5), 'state progress 2'):
# Do your stuffmanager.progress_1.stop('stop progress 1')
manager.progress_2.stop('stop progress 2')goalto change goal in between of process, it's useful for dynamic tasksbar_lenlength of progress bar (default: 60)fillbar fill symbol (default: █)zfillbar zero fill symbol (default: -)decimalspositive number of decimals in percent complete (default: 1)
Please open a new issue on GitHub
CLI-ProgressBar is OpenSource and licensed under the terms of The MIT License (X11). You're welcome to contribute!