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

Reply via email to