Как закончить sys.стандартный ввод.readlines() входные?

это может быть глупый вопрос, но поскольку я не могу найти ответа, я должен его задать.

в интерактивном python я хочу обработать сообщение, которое я получаю с:

>>> message = sys.stdin.readlines()

все работает нормально, но... как остановить его от получения ввода и сохранить его в переменную сообщения? Остановка с помощью ctrl+c останавливает весь процесс, поэтому нет ввода, который нужно сохранить в любом месте. Я думаю, есть простой ответ, который я просто не могу найти...

4 ответов


для системы на базе unix:

Здравствуйте, вы можете ленты : Ctrld

Ctrld закрывает стандартный ввод (stdin), отправив EOF.

пример :

>>> import sys
>>> message = sys.stdin.readlines()
Hello
World
My
Name
Is
James
Bond
# <ctrl-d> EOF sent
>>> print message
['Hello\n', 'World\n', 'My\n', 'Name\n', 'Is\n', 'James\n', 'Bond\n']

Для Windows :

чтобы отправить EOF в Windows, вы можете заменить Ctrld by Ctrlz


использовать CTRL-D.

message = sys.stdin.readlines()
abc
def
<CTRL-D>

# message == ['abc\n', 'def\n']

Это старый вопрос, но он нуждается в обновлении о Windows и различные раскладки клавиатуры.

, Если не CTRL + Z, ни CTRL + D * * работа для вас в Windows и вы блуждаете, что происходит, сделайте это:

  • проверьте, используете ли вы по умолчанию английская раскладка клавиатуры
  • если у вас есть разные, не по умолчанию раскладка клавиатуры попробуйте переключить настройку клавиатуры на английский язык в языковая панель, затем попробуйте нажать ctrl + z После изменений
  • если вы все еще смущены, посмотрите на экран, что появляется в командной строке при нажатии ctrl + z. Какой символ вы видите? Когда я нажимал ctrl + z, я видел это: ^Y, и когда по ошибке я нажал ctrl + y, я видел это ^Z, я нажал enter, и вход был принят, EOF отправлен.

Это несколько странно и нелогично. Я изменил расположение клавиш некоторое время назад, чтобы включить польские символы, но все общие клавиши остаются неизменными, z по-прежнему сопоставляется с z, когда я обычно использую клавиатуру, обычно ctrl + z ничего не делает на моей клавиатуре, поэтому меня не следует менять. Но, по-видимому, в cmd он работает по-другому, чтобы иметь связь по умолчанию между ctrl и z, я должен переключиться на макет по умолчанию или использовать элемент управления y для отправки EOF.


в windows просто сделайте CTRL+Z и нажмите enter