2014-10-10 2 views
1

Я получаю следующее сообщение об ошибке, когда я запускаю этот скрипт и нажмите CTR-D, чтобы закончить свой вклад в программу:EOF ошибка при чтении из стандартного ввода - Python3

Ошибка:

My-MacBook-Pro-2:python me$ python3 test.py 
>> Traceback (most recent call last): 
    File "test.py", line 4, in <module> 
    line = input(">> ") 
EOFError 

Сценарий

import sys 

while(1): 
    line = input("Say Something: ") 
    print(line) 

Почему это происходит?

+0

ли что-нибудь еще изменилось в 'test.py' против что вы скопировали и вставили? Поскольку Traceback, а также вывод показывают совершенно другую команду 'input'. Я не могу воспроизвести эту ошибку в своей системе. (Я получаю 'KeyboardInterrupt', как ожидалось.) –

+1

Вы уверены, что не отправляете CTRL + D? Это отправляет символ EOF в stdin, что объясняет, что вы видите. – dano

+0

@dano Извиняюсь, я хочу набрать CTRL + D. Да, по сути, мой вопрос: как я обрабатываю EOF при чтении stdin? – Apollo

ответ

1

Когда вы используете input, нет необходимости отправлять EOF для завершения ввода; просто нажмите enter. input предназначен для чтения до тех пор, пока не будет отправлен символ новой строки.

Если вы ищете способ вырваться из цикла в то время, вы можете использовать CTRL + D, и просто поймать EOFError:

try: 
    while(1): 
     line = input("Say Something: ") 
     print(line) 
except EOFError: 
    pass 
Смежные вопросы