printing dots in simple program while waiting

J

John

Ok, so this should be a really simple thing to do, but I haven't been
able to get it on the first few tries and couldn't find anything after
searching a bit.

what i want to do is print a 'waiting' statement while a script is
working-- the multithreading aspect isn't an issue, the printing on
the same line is. i want to print something like:

(1sec) working...
(2sec) working....
(3sec) working.....


where the 'working' line isn't being printed each second, but the dots
are being added with time.

something like:

import time
s = '.'
print 'working'
while True:
print s
time.sleep(1)


however, this doesn't work since it prints:

working
..
..
..

any suggestions?
 
T

Tim Chase

Martin said:
see my comment in the code above...

see my added comment in the code above...

Though this will produce spaces between the dots:

waiting . . . . . .

To eliminate the spaces, you need to write to a file-stream such
as sys.stdout:

from sys import stdout
stdout.write('working')
while True:
stdout.write('.')
# might need something like stdout.flush() here
time.sleep(1)
stdout.write('\n')

-tkc
 
J

John

see my comment in the code above...

if that's what you mean

/martin

--http://noneisyours.marcher.namehttp://feeds.feedburner.com/NoneIsYours

You are not free to read this message,
by doing so, you have violated my licence
and are required to urinate publicly. Thank you.

Thanks for the input Martin, but I already tried that. If you put a
comma on that line it successfully prints the first '.' on the same
line, but the rest below. Like:

working .
..
..
..



I want:

working......


I have tried the comma thing on the "print s" line ("print s,"), but
then it doesn't print anything at all...
 
R

Reedick, Andrew

-----Original Message-----
From: [email protected] [mailto:python-
[email protected]] On Behalf Of Martin Marcher
Sent: Wednesday, January 09, 2008 11:57 AM
To: (e-mail address removed)
Subject: Re: printing dots in simple program while waiting
import time
s = '.'
print 'working', # Note the "," at the end of the line
while True:
print s
time.sleep(1)

see my comment in the code above...

if that's what you mean


Bah. The trailing command may prevent the newline, but it appends a
space whether you want it or not.[1] Use sys.stdout.write('.') instead.

import sys

print "wussy nanny state, tax 'n spend my spaces, liberal comma:"
for i in range(1, 10):
print '.',
print
print "manly neo-con I know what's Right so keep your government out of
my strings! print:"
for i in range(1, 10):
sys.stdout.write('.')

[1] Which has to be _the_ most annoying feature of Python. *grrr*

*****

The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. GA625
 
D

Dennis Lee Bieber

I have tried the comma thing on the "print s" line ("print s,"), but
then it doesn't print anything at all...

Likely it does -- but the console is buffering it until it sees a
new-line...

Try using sys.stdout.write() followed by sys.stdout.flush() calls
instead of print statements
--
Wulfraed Dennis Lee Bieber KD6MOG
(e-mail address removed) (e-mail address removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (e-mail address removed))
HTTP://www.bestiaria.com/
 
S

Santiago Romero

i want to print something like:

(1sec) working...
(2sec) working....
(3sec) working.....

where the 'working' line isn't being printed each second, but the dots
are being added with time.

something like:

import time
s = '.'
print 'working'
while True:
print s
time.sleep(1)

however, this doesn't work since it prints:

working
.
.

Change

to

(With the ending ",", which sends NO linefeed to stdout)

Bye :)
 
J

John

-----Original Message-----
From: [email protected] [mailto:python-
[email protected]] On Behalf Of Martin Marcher
Sent: Wednesday, January 09, 2008 11:57 AM
To: (e-mail address removed)
Subject: Re: printing dots in simple program while waiting
John wrote:
see my comment in the code above...
if that's what you mean

Bah. The trailing command may prevent the newline, but it appends a
space whether you want it or not.[1] Use sys.stdout.write('.') instead.

import sys

print "wussy nanny state, tax 'n spend my spaces, liberal comma:"
for i in range(1, 10):
print '.',
print
print "manly neo-con I know what's Right so keep your government out of
my strings! print:"
for i in range(1, 10):
sys.stdout.write('.')

[1] Which has to be _the_ most annoying feature of Python. *grrr*

*****

The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. GA625





Thanks for all of the help. This is what ended up working:



import time
import sys

s = '.'
sys.stdout.write( 'working' )
while True:
sys.stdout.write( s )
sys.stdout.flush()
time.sleep(0.5)
 
J

John Machin

-----Original Message-----
From: [email protected] [mailto:python-
[email protected]] On Behalf Of Martin Marcher
Sent: Wednesday, January 09, 2008 11:57 AM
To: (e-mail address removed)
Subject: Re: printing dots in simple program while waiting
John wrote:
import time
s = '.'
print 'working', # Note the "," at the end of the line
while True:
print s
time.sleep(1)
see my comment in the code above...
if that's what you mean
Bah. The trailing command may prevent the newline, but it appends a
space whether you want it or not.[1] Use sys.stdout.write('.') instead.
import sys
print "wussy nanny state, tax 'n spend my spaces, liberal comma:"
for i in range(1, 10):
print '.',
print
print "manly neo-con I know what's Right so keep your government out of
my strings! print:"
for i in range(1, 10):
sys.stdout.write('.')
[1] Which has to be _the_ most annoying feature of Python. *grrr*

The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. GA625

Thanks for all of the help. This is what ended up working:

import time
import sys

s = '.'
sys.stdout.write( 'working' )
while True:
sys.stdout.write( s )
sys.stdout.flush()
time.sleep(0.5)

For your next trick, write a "spinner" using |/-\ in succession :)
 
A

Alex VanderWoude

John said:
what i want to do is print a 'waiting' statement while a script is
working-- the multithreading aspect isn't an issue, the printing on
the same line is. i want to print something like:

(1sec) working...
(2sec) working....
(3sec) working.....


where the 'working' line isn't being printed each second, but the dots
are being added with time.

When issuing output to stdout I have do something like this:

print "working", # Note trailing comma
while some_condition:
do_something()
print "\b.", # \b is backspace
print # Finish the line of dots

- Alex
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top