Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2015 18:52:08

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование input после чтения их stdin

Запускаю программу вот так:

cat my_file.txt | python3 my_script.py

Внутри скрипта читаю переданный файл через sys.stdin и потом когда я следом хочу использовать input у меня вываливается ошибка EOFError: EOF when reading a line.
Объясните пожалуйста как можно прочитать данные из stdin, а потом воспользоваться input.

P.S Меня это интересует с чисто теоретической стороны. Я понимаю, что можно проще сделать. Просто интересны причины появления ошибки как её побороть можно.

Офлайн

#2 Июль 19, 2015 21:55:24

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Использование input после чтения их stdin

может быть только один стандартный ввод, или это с клавиатуры или с файла
когда вы таким образом запускаете, то изначально перебираются все строки а потом идет ваш input
и так как больше нету данных на чтение то вызывается ошибка EOFError



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Июль 19, 2015 22:42:30

maxim83632
Зарегистрирован: 2015-03-24
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование input после чтения их stdin

terabayt
Хорошо, понял, ну а как избежать ошибки?

Офлайн

#4 Июль 19, 2015 23:14:31

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Использование input после чтения их stdin

sys.stdin = open("/dev/tty")
а после перенаправления уже делать инпут



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version