command line reports
Bengt Richter
bokr at oz.net
Thu Aug 11 16:42:57 EDT 2005
On Thu, 11 Aug 2005 15:43:23 -0400, Darren Dale <dd55 at cornell.edu> wrote:
>Peter Hansen wrote:
>
>> Darren Dale wrote:
>>> Is there a module somewhere that intelligently deals with reports to the
>>> command line? I would like to report the progress of some pretty lengthy
>>> simulations, and currently I have the new reports written on a new line
>>> rather rather than overwriting the previous report.
>>
>> You mean you want sys.stdout.write(report + '\r') instead of "print
>> report" ?
>>
>> It's not really clear what you want. What's a "report" to you?
>>
>> -Peter
>
>I am printing something like
>
>trial 1 of 100
>trial 2 of 100
>...
Peter's suggestion will work, but it's easy to get something like
>>> import sys, time
>>> def test():
... for i in xrange(5):
... sys.stdout.write(('trial %s of 5'%(i+1)) + '\r')
... time.sleep(.25)
... print "We're done!"
...
>>> test()
We're done!5
^--(note leftover from last "report: line)
By the same token (more or less ;-) if your "report" line shortens
during progress (e.g., changing from
'long_name_test trial 100 of 100'
to
'short_name trial 1 of 10'
you will likely see
'short_name trial n of 10 of 100'
for a while, unless you pad the report line with blanks to a constant length.
Also, I guess some platforms could require flushing stdout to be sure of
seeing the latest line as you go.
>
>so I get 100 lines by the time the code is finished. I would like to replace
>the previous report with the current one, so I only use one line by the
>time the code is finished.
>
>I was also hoping that there was a set of tools out there for spinners,
>meters, etc...
The question with python for this kind of thing is usually, "Which will be
faster, googling for it, or writing it?" ;-)
Regards,
Bengt Richter
More information about the Python-list
mailing list