Carl Banks wrote:
On May 23, 3:49 am, Joel Ross <jo...@cognyx.com> wrote:
def progressbar(self, number, total, char):
percentage = float(number*100)/total
percentage = int(round(percentage))
percentage = int(100 - percentage)
self.f=sys.stdout
if percentage > 0:
char = char * percentage
self.f.write(char)
self.f.flush()
sleep(0.2)
[snip]
So when it prints a progress at 50% it will print 50 (*) characters and
if the next progress is 51% it will print 51 (*) characters including
the last 50 (*) characters, so instead on ending up with 100 (*)
characters I end up with a shit load of them depending on how many lines
I pass to the progressbar() function.
Here's why: when you write "char = char * percentage", you are setting
char to a string, so on the next iteration char is the string you
printed last time. Thus char grows factorially with iterations. Not
good.
Instead, change char to some other name so you don't ever overwrite
it; char should always be just one character.
bar = char * percentage
self.f.write(bar)
Carl Banks
Still having the same problem if I pass it 1000 lines it will printout
1000 asterisks when I say lines I mean the argument <number> for the
progress() function. I only want to printout 100 asterisks no matter how
many lines I pass to the progress() function, that's why I need the
printout to overwrite the last printout instead of appending to the last
printout. I know there must be a way to do it. I'll keep trying and
eventually get it. Any ideas would be helpful
jross
--
http://mail.python.org/mailman/listinfo/python-list