On May 16, 4:03 pm, Carl Banks <[EMAIL PROTECTED]> wrote: > On May 16, 6:38 pm, [EMAIL PROTECTED] 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. > > Your standard output uses line-buffering, which means that the > underlying I/O code stores all the output in memory until it gets a > newline, only then does it send the output to the terminal (or > console, or whatever). > > Workarounds to this are as follows: > > 1. Explicity flush the buffer after any print statements that end with > a comma: > > print "whatever", > sys.stdout.flush() > > 2. Run Python in unbuffered mode, by using the -u switch: > > python -u yourscript.py > > Carl Banks
Thanks for the reply. This worked as expected. I did not know about the -u switch, this is good stuff. Amit -- http://mail.python.org/mailman/listinfo/python-list