Printing digits in one place

2008-11-24 Thread Oltmans
I'm writing a file-transfer program and I'm receiving bytes
transferred in a function. Now I would like to print bytes transfered
in one place e.g.

Bytes Transfered so far X

and X will increase and cursor should stay at this position. I don't
want to use any 3rd party module for this. Can I somehow do that
without using any third-party module?

I've been able to do this with Console module available at
http://effbot.org/zone/console-handbook.htm but I would want to do
this without the Console module. Actually , I'm able to initialize the
Console module and print the bytes transferrred information but I
can't find a way to exit from Console module so that my other
functions can proceed with normal display using 'print' statement.

Any ideas will be appreciated.
--
http://mail.python.org/mailman/listinfo/python-list


Re: Printing digits in one place

2008-11-24 Thread Steve Holden
Oltmans wrote:
 I'm writing a file-transfer program and I'm receiving bytes
 transferred in a function. Now I would like to print bytes transfered
 in one place e.g.
 
 Bytes Transfered so far X
 
 and X will increase and cursor should stay at this position. I don't
 want to use any 3rd party module for this. Can I somehow do that
 without using any third-party module?
 
 I've been able to do this with Console module available at
 http://effbot.org/zone/console-handbook.htm but I would want to do
 this without the Console module. Actually , I'm able to initialize the
 Console module and print the bytes transferrred information but I
 can't find a way to exit from Console module so that my other
 functions can proceed with normal display using 'print' statement.
 
 Any ideas will be appreciated.

Try repeatedly writing something like

\r  \rBytes Transferred So Far %d \
  % count

Not the fastest approach, but probably fast enough.

If you *must* have the cursor on the number of bytes transferred
then try using backspaces after you have printed out the number. But
you'll need to track how long the number is to put out the right number
of backspaces. Something like (untested)

sys.stdout.write(Bytes Transferred So Far)
for ...
...
cs = str(count)
csl = len(cs)
sys.stdout.write(%s%s%s%s % (
 *csl, \b*csl, cs, \b*csl)

Use sys.stdout.write() for full control over spacing and newlines.

regards
 Steve
-- 
Steve Holden+1 571 484 6266   +1 800 494 3119
Holden Web LLC  http://www.holdenweb.com/

--
http://mail.python.org/mailman/listinfo/python-list


Re: Printing digits in one place

2008-11-24 Thread John Machin
On Nov 25, 10:21 am, Oltmans [EMAIL PROTECTED] wrote:
 I'm writing a file-transfer program and I'm receiving bytes
 transferred in a function. Now I would like to print bytes transfered
 in one place e.g.

 Bytes Transfered so far X

 and X will increase and cursor should stay at this position. I don't
 want to use any 3rd party module for this. Can I somehow do that
 without using any third-party module?

 I've been able to do this with Console module available 
 athttp://effbot.org/zone/console-handbook.htmbut I would want to do
 this without the Console module. Actually , I'm able to initialize the
 Console module and print the bytes transferrred information but I
 can't find a way to exit from Console module so that my other
 functions can proceed with normal display using 'print' statement.

 Any ideas will be appreciated.

Try using backspaces e.g. something like this:

|  import time, sys
|  msg = ''
|  for i in range(15):
| ...time.sleep(2.0)
| ...nbs = len(msg)
| ...msg = str(i)
| ...sys.stdout.write('\b' * nbs + msg)
| ...

HTH,
John
--
http://mail.python.org/mailman/listinfo/python-list


Re: Printing digits in one place

2008-11-24 Thread Tim Chase

Try repeatedly writing something like

\r  \rBytes Transferred So Far %d \
  % count


Rather than backing up twice with \r, I'd just suggest

  \rBytes Transferred So Far %d% count

or even

  \rBytes Transferred So Far %d%s % (count, ' '*20)

-tkc




--
http://mail.python.org/mailman/listinfo/python-list


Re: Printing digits in one place

2008-11-24 Thread Lawrence D'Oliveiro
Oltmans wrote:

 Bytes Transfered so far X
 
 and X will increase and cursor should stay at this position.

Most terminal emulators are VT100-compatible these days. You could use 
something like ESC[80D to move back to the beginning of the same line.
--
http://mail.python.org/mailman/listinfo/python-list