Я пытаюсь получить ввод от пользователя в командной строке. Программа считывает данные из текстового файла в формате «cat text.txt | ./thescript.py»
В момент написания сценария все данные уже были прочитаны, обработаны и помещены в список списков.
Теперь я перебираю этот список списков в поисках сомнительных предметов. Код в основном выглядит следующим образом:
for invoice in parsedlist:
if invoice[-1] == 3:
sys.stderr.write("triple duplicate at " + invoice[2]+' : ' + invoice[3]+"\n")
sys.stderr.write("continue Y or N \n")
answer = raw_input("Type your answer here")
if answer == 'N':
sys.exit(1)
else:
pass`
Этот код приводит к ошибке EOFError. Из того, что я уже понимаю, в данном случае stdin - это чтение из cat, и поскольку он уже достиг EOF, поэтому raw_input получает EOF здесь? (Я думаю) Цель состоит в том, чтобы скрипт напечатал предупреждение о стандартной ошибке и позволил мне выбрать, игнорировать ли это предупреждение и продолжить или выйти полностью. В конце все выходные данные отправляются на стандартный вывод и не содержат никаких предупреждений об ошибках или ответов. Я видел примеры, которые используют попытку / исключение, но я не смог понять это в этом контексте. (Например, почему raw_input не ожидает ввода?)
Я думаю, что я могу просто атаковать эту проблему неправильно и, таким образом, создать проблему, которую можно лучше обойти, чем перепрыгнуть. Любая помощь ценится как всегда.