This is a python package that will create progress bars for command-line programs.
from eta import ETA eta = ETA(ticks) for foo in bar: eta.print_status() eta.done()
Or, file based usage (calls tell() to get progress)
fobj = open(fname) eta = ETA(os.stat(fname).st_size, fileobj=fobj) for line in fobj: eta.print_status(extra="extra message") ... eta.done()
The output is something similar to:
20.0% - 0:04 [====> ] ETA: 0:17 (Optional messages go here)
The default is to only display the progress bar if stderr is connected to a terminal (sys.stderr.isatty() is True). If you want to always enable the progress bar, you need to set the evironmental variable 'SHOW_ETA'.
To hide the progress bar (for use in other batch scripts), you can hide the progress bar by setting the environmental variable 'HIDE_ETA'.
The default is to update the progress bar every 0.2 sec, unless we aren't attached to a tty (and SHOW_ETA is set). If we aren't attached to a TTY, then no status messages are output to stderr at all.
There is also a socket based ETA implementation that will listen to the file /tmp/eta-$pid. If you try to read this file, it will display all of the relevant ETA information for the current process. You can (obviously) only have one active Socket ETA object for each process. You can start this ETA object by setting an environmental variable 'SOCKET_ETA'.