On Nov 7, 2007 6:59 AM, Wojciech Walczak <[EMAIL PROTECTED]> wrote: > py3k's print() is not flushing when end is set to '' and all it has to > print is one-character-long string:
print() shouldn't flush if there isn't a newline, unless the buffer is full or the user calls flush(). However, in an interactive interpreter in pre-3.0, Python will automatically add a newline. Try this in 2.5: --------------------------------------- import time print 'foo', time.sleep(10) print --------------------------------------- You'll see that "foo" appears *after* 10 seconds, not before. However, in an interactive interpreter, Python will add a newline after 'foo' ever with the comma there, and the newline causes a flush. Observe (2.5): >>> print 'foo', foo >>> print 'foo' foo >>> The same number of newlines are created with the comma and without, which is different than the script behavior. It sounds like P3K isn't doing this. The patch you suggest would cause a flush after *every* write with print, which would cause a very significant performance hit on programs that do a lot of writing to standard output (especially if standard output is a pipe). Tangent: If standard output is a pipe and not a tty, is P3K smart enough to switch to fully-buffered mode instead of line-buffered mode? -- Daniel Stutzbach, Ph.D. President, Stutzbach Enterprises LLC _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com