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 -- http://mail.python.org/mailman/listinfo/python-list