Потоковый ввод и вывод
Кратко про потоковый ввод stdin и потоковый вывод stdout. Что это и для чего нужно, как с этим работать
Потоковый ввод
sys.stdin – это специальный объект (итератор) в программе, куда попадает весь текст, который ввёл пользователь. Потоком его называют потому, что данные хранятся в нём до тех пор, пока программа их не прочитала. Таким образом, данные поступают в программу и временно сохраняются в потоке ввода (sys.stdin), а программа может забрать их оттуда, например, с помощью встроенной функции input(). В момент прочтения, данные пропадают из потока ввода, так как он хранит их до тех пор, пока они не будут прочитаны.
Для работы с потоками необходимо подключить модуль sys: import sys.
С помощью потока ввода можно в одну строчку кода прочитать весь пользовательский ввод в список. Примеры:
data = [line.strip() for line in sys.stdin] или data = list(map(str.strip, sys.stdin)).
Из stdin можно считать сразу все строки с помощью методов read() и readlines(). К слову, потоковый ввод тем и удобен, что не нужно беспокоиться о количестве введённых строк, ведь работать можно со всем сразу.
Потоковый вывод
Аналогичным образом можно работать с потоковым выводом (sys.stdout). По умолчанию функция print() перенаправляет вывод данных именно в sys.stdout, но всё же мы и сами можем писать в него.
|
|
|
|
Функция print() добавляет перевод на новую строку, а явная запись данных в sys.stdout с помощью метода write() нет. Чтобы добавить перевод на новую строку, мы используем стандартный символ \n. Также нужно иметь в виду, что при использовании потока вывода нужно самостоятельно преобразовывать данные к строковому типу данных (функция print() это делает автоматически).
cloudtips