Подтвердить что ты не робот

Как читать ввод пользователя до EOF?

Мой текущий код считывает ввод пользователя до разрыва строки. Но я пытаюсь изменить это в формате, где пользователь может писать ввод до strg + d, чтобы закончить его ввод.

Сейчас я делаю это так:

input = raw_input ("Input: ")

Но как я могу изменить это на версию EOF-Ready?

4b9b3361

Ответ 1

Используйте file.read:

input_str = sys.stdin.read()

Согласно документации:

file.read([size])

Прочитайте не больше байтов размера из файла (меньше, если чтение попадает в EOF до получения байтов размера). Если аргумент размера отрицательный или пропущено, прочитайте все данные до тех пор, пока не будет достигнуто EOF.

>>> import sys
>>> isinstance(sys.stdin, file)
True

BTW, не используйте input как имя переменной. Он затеняет встроенную функцию input.

Ответ 2

Вы также можете сделать следующее:

acc = []
out = ''
while True:
    try:
        acc.append(raw_input('> ')) # Or whatever prompt you prefer to use.
    except EOFError:
        out = '\n'.join(acc)
        break

Ответ 3

Это работало для меня в Python 3:

from sys import stdin

for line in stdin:
  print(line)

Ответ 4

С sys.stdin.readline() вы можете написать вот так:

import sys

while True:
    input_ = sys.stdin.readline()
    if input_ == '':
        break
    print type(input_)
    sys.stdout.write(input_)

Помните, что независимо от вашего ввода, это строка.

Для версии raw_input или input напишите вот так:

while True:
    try:
        input_ = input("Enter:\t")
        #or
        _input = raw_input("Enter:\t")
    except EOFError:
        break
    print type(input_)
    print type(_input)
    print input_
    print _input