Robert Bauck Hamar <[EMAIL PROTECTED]> wrote: > Jerry Hill wrote: >> On 6/15/07, HMS Surprise <[EMAIL PROTECTED]> wrote: >>> I want to print a count down timer on the same line. I tried
>>> print '\r', timeLeft, >>> which just appends to the same line. >> Sounds to me like whatever you're printing to doesn't do what you >> expect when it encounters a carriage return (\r). Is your program >> running in a terminal? Both the windows cmd.exe shell and bash under >> linux seem to do the right thing when encountering a '\r'. > Actually, bash has nothing to do with how the terminal handles \r. The job > of the shell (bash, ksh, csh, sh ...) is to execute your script when you > type its name. > Outputting a \r might or might not move the cursor to the beginning of the > line. It's completely system specific, and even on the same OS, it depends > on the capabilities of the actual terminal the programs run on, and on some > terminal emulators it might depend on configuration settings. > If you need to explore the capabilities of the terminal, curses will be a > good place to start. > -- > rbh Sometimes you don't want to full curses mode switch and other baggage. You can use the 'tput' utility to get the terminal escape sequences for various cursor movements for your terminal. Read the tput man page for some information, and the terminfo(5) man page for more. In particular you can do things like (from a shell prompt): tput sc; tput cup 0 30;echo Front and Center; tput rc ... which saves the current cursor location (sc), executes a cursor position to the first line, 30th column (cup 0 30), writes some text there, and then restores the cursor location (rc). The trick, in Python, is that you can read these sequences into your program via popen() calls and then print them wherever you want to use them. You can even set colors (foreground and background), and text attributes (dim, bright, blinking, underline) and perform various other curses like applications without actually doing the curses mode changes if you're really a bit masochistic. However, for the original poster's purposes the easiest option would probably be to print something like: print chr(0x08) * 80, "new line stuff" + " " * 66 (Print lots of backspaces followed by whatever information you wanted to over-write the line with and padding with enough spaces to clear any other stuff you wanted to over-write). Yes, this is sloppy. Yes, it might not work on some terminals or under some terminal settings. However, it should work under most circumstances on most terminals --- including some which wouldn't support the curses module. You can improve it somewhat by keeping track of how many characters you've printed to the current (last) line and dynamically printing the precise number of backspaces and padding spaces that are needed. -- Jim Dennis, Starshine: Signed, Sealed, Delivered -- http://mail.python.org/mailman/listinfo/python-list