Ответ 1
Это открытая ошибка, выпуск № 17404 (последнее обновление 2013-03-13): http://bugs.python.org/issue17404
Python 2 поддерживает небуферизованный ввод/вывод текста.
Тот же подход не работает в python 3. Почему был отключен небуферизованный текстовый ввод-вывод?
> import sys
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
builtins.ValueError: can't have unbuffered text I/O
Двоичный файл все еще отлично работает:
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) # works fine
Это открытая ошибка, выпуск № 17404 (последнее обновление 2013-03-13): http://bugs.python.org/issue17404
Для текстовых файлов, если вы хотите использовать буферизацию по очереди, используйте open(..., buffering=1)
Из документации python:
1 для выбора буферизации строк (используется только в текстовом режиме)