[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