Unbuffered stderr in Python 3

Terry Reedy tjreedy at udel.edu
Wed Nov 4 18:00:22 EST 2015


On 11/3/2015 10:18 PM, Steven D'Aprano wrote:
> On Wednesday 04 November 2015 09:25, Terry Reedy wrote:
>
>> On 11/3/2015 10:42 AM, Chris Angelico wrote:
>>> On Wed, Nov 4, 2015 at 2:00 AM, Random832 <random832 at fastmail.com> wrote:
>>>> Nobody <nobody at nowhere.invalid> writes:
>>>>
>>>>> It's probably related to the fact that std{in,out,err} are Unicode
>>>>> streams.
>>>>
>>>> There's no fundamental reason a Unicode stream should have to be line
>>>> buffered. If it's "related", it's only in that an oversight was made in
>>>> the course of making that change.
>>
>> The current behavior is not an 'oversight'.  I was considered, decided,
>> and revisited in https://bugs.python.org/issue13601.  Guido:
>> "Line-buffering should be good enough since in practice errors messages
>> are always terminated by a newline."  If not, print(part_line,
>> file=sys.stderr, flush=True) works for the unusual case.
>
> This is one of the offending line from our code base:
>
> print('<4>Suspicious answer "{}"!'.format(answer), file=sys.stderr)
>
> So that ought to be terminated by a newline.

Or include 'flush=True' if you really want that to be a partial line.

-- 
Terry Jan Reedy




More information about the Python-list mailing list