Как читать со стандартного ввода в Python
В Python есть три способа чтения данных из стандартного ввода.
- sys.stdin
- встроенная функция input()
- функция fileinput.input()
1. Использование sys.stdin для чтения со стандартного ввода
rstrip(), чтобы удалить его. Вот простая программа для чтения пользовательских сообщений из стандартного ввода и их обработки. Программа завершится, когда пользователь введет сообщение «Выход».
import sys
for line in sys.stdin:
if 'Exit' == line.rstrip():
break
print(f'Processing Message from sys.stdin *****{line}*****')
print("Done")
Выход:
Hi
Processing Message from sys.stdin *****Hi
*****
Hello
Processing Message from sys.stdin *****Hello
*****
Exit
Done
Обратите внимание на использование rstrip() для удаления завершающего символа новой строки, чтобы мы могли проверить, ввел ли пользователь сообщение «Выход» или нет.
2. Использование функции input() для чтения данных стандартного ввода
Мы также можем использовать функцию Python input() для чтения стандартных входных данных. Мы также можем запросить сообщение для пользователя. Вот простой пример чтения и обработки стандартного входного сообщения в бесконечном цикле, если только пользователь не введет сообщение Exit.
while True:
data = input("Please enter the message:\n")
if 'Exit' == data:
break
print(f'Processing Message from input() *****{data}*****')
print("Done")
Выход:
Функция input() не добавляет символ новой строки к пользовательскому сообщению.
3. Чтение стандартного ввода с использованием модуля ввода файлов
Мы также можем использовать функцию fileinput.input()
для чтения из стандартного ввода. Модуль fileinput предоставляет служебные функции для циклического обработки стандартного ввода или списка файлов. Когда мы не передаем никаких аргументов функции input(), она считывает аргументы со стандартного ввода. Эта функция работает так же, как sys.stdin, и добавляет символ новой строки в конец вводимых пользователем данных.
import fileinput
for fileinput_line in fileinput.input():
if 'Exit' == fileinput_line.rstrip():
break
print(f'Processing Message from fileinput.input() *****{fileinput_line}*****')
print("Done")
Выход: