Op 2010-12-12 22:33, Steven D'Aprano schreef: > Terry Carroll wrote: > >> import time >> for t in range(10,0, -1): >> print "%s \x0D" %t, >> time.sleep(1) >> print # get to next line >> print "Done!" > > Which operating system and terminal did you use? > > In my experience, using print is not satisfactory, because the print > command buffers the output and doesn't actually print anything until > either a newline or you have a certain number of characters. So the > above will queue up the following string: > > "10 \r9 \r8 \r7 \r6 \r5 \r4 \r3 \r2 \r1 \r\n" > > before anything becomes visible, and of course that just looks like "1".
Instead of print, use sys.stdout.write(): import sys import time for t in range(10, 0, -1): sys.stdout.write('\r%s ' % t) time.sleep(1) sys.stdout.write('\n') sys.stdout.write('Done!') -- The saddest aspect of life right now is that science gathers knowledge faster than society gathers wisdom. -- Isaac Asimov Roel Schroeven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor