Поиск по сайту:

Как читать со стандартного ввода в Python


В Python есть три способа чтения данных из стандартного ввода.

  1. sys.stdin
  2. встроенная функция input()
  3. функция 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")

Выход: