SImple python print question

amit.uttam at gmail.com amit.uttam at gmail.com
Fri May 16 20:12:10 EDT 2008


On May 16, 4:02 pm, Hans Nowak <zephyrfalcon!NO_SP... at gmail.com>
wrote:
> amit.ut... at gmail.com wrote:
> > Hey there,
>
> > I have a simple question about python print statement. Take the
> > following code snippet for example...
>
> > 1 print "-#- executing: %s" % section,
> > 2 tests[section] = test.testcase(name=config.get(section,'name'))
> > 3 tests[section].runTest()
> > 4 printStatus(tests[section])
>
> > Now the problem is that line 1 does not get printed until line 4. What
> > I thought would happen is that line 1 gets executed and the user sees
> > that the statement that the test case is executing. Then after the
> > test case executes a "PASS" or "FAIL" appears on the same line as the
> > "-#- executing: 0053" statement.
>
> > e.g.
> > -#- executing: 0053     FAIL
>
> > Some tests take a long time to finish thus the screen is blank until
> > the entire test finishes and the above statement is outputted.
>
> > Thanks for any help.
>
> 'print' sends its output to sys.stdout, which is buffered, and may not be
> displayed immediately (because it's held in the buffer).  To force the output to
> be displayed, use flush():
>
>    print "-#- executing: %s" % section,
>    sys.stdout.flush()
>    ...tests here...
>
> Hope this helps!
>
> --Hans

Thanks a lot!

This worked beautifully!



More information about the Python-list mailing list