Отправка EOF для выхода из многострочного чтения вызывает исключение при поиске ввода для другой переменной

Если у меня есть следующий код Python:

keyphrase = sys.stdin.read()
print(keyphrase)
domain = input()
print(domain)

Я запускаю его следующим образом:

/Users/me/bin/python /Users/me/PycharmProjects/pem_formatter/test_code.py
Please enter a key:
Key line 1
Key line 2
Key line 3
^D
Key line 1
Key line 2
Key line 3

Please enter a domain:
Traceback (most recent call last):
  File "/Users/me/PycharmProjects/pem_formatter/test_code.py", line 8, in <module>
    domain = input()
EOFError: EOF when reading a line

Я попытался использовать try/except следующим образом:

try:
    print('Please enter a key:')
    keyphrase = sys.stdin.read()
    print(keyphrase)
except EOFError as error:
    print('EOF Error')

но это мало что изменило:

/Users/me/bin/python /Users/me/PycharmProjects/pem_formatter/test_code.py
Please enter a key:
Key line 1
Key line 2
Key line 3
^D
Traceback (most recent call last):
  File "/Users/me/PycharmProjects/pem_formatter/test_code.py", line 12, in <module>
    domain = input()
EOFError: EOF when reading a line
Key line 1
Key line 2
Key line 3

Please enter a domain:

Process finished with exit code 1

Что мне делать в сценариях, когда я могу захотеть ввести многострочный ввод для одной переменной и одну строку для другой?


person runnerpaul    schedule 16.04.2020    source источник
comment
Спасибо @jordanm. Я действительно сталкивался с этим. Я просто не могу отделаться от ощущения, что должен быть лучший способ сделать это. Я думал, что sys.stdin.read() будет решением, но Ctrl-D вызывает проблемы.   -  person runnerpaul    schedule 16.04.2020
comment
Это потому, что Ctrl-D отправляет EOF и закрывает стандартный ввод.   -  person jordanm    schedule 16.04.2020