Почему Python3.2 требует 3 ctrl+D для выхода, а Python3.3 только 2?

Запустите следующий скрипт:

import sys
sys.stdout.write(sys.stdin.read())

Затем введите:

a<ctrl-d><ctrl-d><ctrl-d>

В Python 2.6, 2.7, 3.3, 3.4, 3.5 программа завершается всего через 2 <ctrl-d>, но в Python 3.1 и 3.2 для этого требуется 3.

Любые подсказки относительно того, почему это так?


person user48206    schedule 22.11.2016    source источник
comment
Не нужно даже 2. См. этот отчет об ошибке. Короткий ответ: потому что были исправлены ошибки.   -  person Martijn Pieters    schedule 23.11.2016
comment
Python 3 получил новую подсистему ввода-вывода, и большинство ошибок было устранено в версии 3.3. Так что в 3.0-3.2 могли быть проблемы. Я не буду выяснять, какая именно ошибка была исправлена ​​для этого конкретного поведения.   -  person Martijn Pieters    schedule 23.11.2016
comment
@MartijnPieters одного ^D (конец файла) обычно достаточно, но с ожидающим вводом первый ^D завершает входной поток (и в IDLE Shell приводит к печати 0 для 0 записанных символов), а второй убивает программу. В консоли Windows вместо этого требуется ^Z\n.   -  person Terry Jan Reedy    schedule 23.11.2016
comment
@MartijnPieters Почему бы не взять 2? Согласно POSIX, первый EOF сбрасывает ожидающий ввод, второй EOF (без ожидающего ввода) заставляет read() возвращать 0 stackoverflow. com/a/21261742/4956890   -  person user48206    schedule 23.11.2016
comment
@TerryJanReedy: верно, я пропустил ожидающий ввод.   -  person Martijn Pieters    schedule 23.11.2016