[Python-Dev] Can't have unbuffered text I/O in Python 3.0?

Fabio Zadrozny fabiofz at gmail.com
Fri Dec 19 23:20:22 CET 2008


You're right, thanks (guess I'll use that option then).

Now, is it a bug that Python 3.0 doesn't run unbuffered when
specifying -u or PYTHONUNBUFFERED, or was this support dropped?

Thanks,

Fabio

On Fri, Dec 19, 2008 at 8:03 PM, Brett Cannon <brett at python.org> wrote:
> On Fri, Dec 19, 2008 at 13:43, Fabio Zadrozny <fabiofz at gmail.com> wrote:
>> Hi,
>>
>> I'm currently having problems to get the output of Python 3.0 into the
>> Eclipse console (integrating it into Pydev).
>>
>> The problem appears to be that stdout and stderr are not running
>> unbuffered (even passing -u or trying to set PYTHONUNBUFFERED), and
>> the content only appears to me when a flush() is done or when the
>> process finishes.
>>
>> So, in the search of a solution, I found a suggestion from
>> http://stackoverflow.com/questions/107705/python-output-buffering
>>
>> to use the following construct:
>>
>> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
>>
>> But that gives the error below in Python 3.0:
>>
>>    sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
>>  File "D:\bin\Python30\lib\os.py", line 659, in fdopen
>>    return io.open(fd, *args, **kwargs)
>>  File "D:\bin\Python30\lib\io.py", line 243, in open
>>    raise ValueError("can't have unbuffered text I/O")
>> ValueError: can't have unbuffered text I/O
>>
>> So, I'd like to know if there's some way I can make it run unbuffered
>> (to get the output contents without having to flush() after each
>> write).
>
> Notice how the exception specifies test I/O cannot be unbuffered. This
> restriction does not apply to bytes I/O. Simply open it as 'wb'
> instead of 'w' and it works.
>
> -Brett
>


More information about the Python-Dev mailing list