Потоковый ввод и вывод
Кратко про потоковый ввод 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()
это делает автоматически).
