Потоковый ввод и вывод

Кратко про потоковый ввод 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, но всё же мы и сами можем писать в него.

1
2
3
4
5
6
7
import sys

print('Hello')
sys.stdout.write('world!')
print('from')
sys.stdout.write('python\n')
print('Bye-bye')
1
2
3
4
5
# Вывод:
Hello
world!from
python
Bye-bye

Функция print() добавляет перевод на новую строку, а явная запись данных в sys.stdout с помощью метода write() нет. Чтобы добавить перевод на новую строку, мы используем стандартный символ \n. Также нужно иметь в виду, что при использовании потока вывода нужно самостоятельно преобразовывать данные к строковому типу данных (функция print() это делает автоматически).

Поддержать автора
NoisyCake cloudtipscloudtips
0%