Skip to content

Repository files navigation

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

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 stuff

Multiple mode

fromcli_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')

Parameters

  • goal to change goal in between of process, it's useful for dynamic tasks
  • bar_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

License

CLI-ProgressBar is OpenSource and licensed under the terms of The MIT License (X11). You're welcome to contribute!

About

lightweight library to print progress bar in cli

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages