[Tutor] carriage return on windows
Victor Rex
apple_py at biz-experts.net
Tue Feb 1 17:28:31 CET 2005
Michael Janssen wrote:
>On Mon, 31 Jan 2005 18:01:59 -0600, Victor Rex <apple_py at biz-experts.net> wrote:
>
>
>
>>I played around with this output issue and I love the way it works.
>>Now, how do you do this in *nix? I tried the same approach and I get a
>>blank line for 5 seconds (or whatever number of cycles you have on your
>>example) and the a final line with the last value of the iterable.
>>
>>Do you happen to know how this in done?
>>
>>
>
>you might want to flush stdout after printing to it. "print" will
>cares for this only when not using that trailing comma. "flush" means
>to write immedatly instead to wait for a fair amount of data.
>
>import sys,time
>for i in range(8):
> sys.stdout.write( "step: %s\r" % i)
> # or: print "step: %s\r" % i,
> sys.stdout.flush()
> time.sleep(.5)
>
>
>There's still another possibilty using ansi control sequences. The
>dirty way is to print (without trailing comma) and go back to previous
>line:
>
>import time
>for i in range(8):
> print "step: %s\033[A" % i
> # print subsystem has done stdout.flush
> time.sleep(.5)
>
>It's dirty cause the next line was already entered and thus is written
>(as an empty line) and content of older "steps" will stay an screen,
>when subsequents lines aren't long enough to overwrite them. Which
>also applies to \r:
>
>import sys,time
>for i in range(8,0,-1):
> # printing 8**8, ..., 0**0 on line. Forget to overwrite
> sys.stdout.write( "step: %s\r" % (i**i))
> sys.stdout.flush()
> time.sleep(.5)
>
>Fixes are to add whitespace to the line. Stepping back with \033[D
>fixes the empty newline issue (which is most often not worth the
>effort):
>
>import sys,time
>for i in range(8,0,-1):
> # fixing output length to 30
> output = "%-30s" % "step: %s" % (i**i)
> length = len(output)
> sys.stdout.write(output)
> # "print output," would be different, because of implizit spaces
> sys.stdout.write("\033[D"* (length))
> sys.stdout.flush()
> time.sleep(.5)
>
>
>regards
>Michael
>
>
>
>
Excellent. Thanks Kent and Michael.
Great tutorial ;-)
You're right Michael. This last one works nicely but it is probably not
worth the effort.
I likes the previous one but adding fixed formatting to the number
output, something like
"step: %9s\r"
instead of just
"step: %s\r".
Thanks again.
Victor
More information about the Tutor
mailing list