SImple python print question

Hans Nowak zephyrfalcon!NO_SPAM! at gmail.com
Fri May 16 19:02:33 EDT 2008


amit.uttam 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



More information about the Python-list mailing list