Python: потоковый ввод stdin

В общем (классическом) виде чтение с помощью stdin производится следующим образом:

import sys
for line in sys.stdin:
    # rstrip('\n') "отрезает" от строки line идущий справа символ
    # перевода строки, ведь print сам переводит строку
    print(line.rstrip('\n'))

Если запустить эту программу, она будет работать вечно. Чтобы показать, что ввод закончен, пользователю недостаточно нажать Enter - компьютер не знает, завершил пользователь работу или будет еще что-то вводить (при этом Enter превратится в пустую строку). Вместо этого надо нажать Ctrl + D (если работаете в консоли Linux или IDE PyCharm) либо Ctrl + Z, затем Enter (если работаете в консоли Windows).

Если вы работаете в IDE Wing, кликните правой кнопкой мыши и выберите Send EOF, затем нажмите Enter. Это запишет в поток ввода специальный символ EOF (end of file), который отмечает конец ввода.

Через sys.stdin можно вычитать всё, что попадает через ввод в список (количество строк ввода заранее неизвестно):

data = list(map(str.strip, sys.stdin))

Все строки можно считать (с сохранением символов перевода строки) в список вот таким образом:

data = sys.stdin.readlines()

Cчитать многострочный текст из стандартного потока ввода в текстовую переменную можно вот так:

str_data = sys.stdin.read()

Рейтинг

Проблемы с госуслугами, медленный интернет или плохая связь? Напишите об этом — Минцифры поможет с решением