Как читать ввод пользователя до EOF?
Мой текущий код считывает ввод пользователя до разрыва строки.
Но я пытаюсь изменить это в формате, где пользователь может писать ввод до strg + d, чтобы закончить его ввод.
Сейчас я делаю это так:
input = raw_input ("Input: ")
Но как я могу изменить это на версию EOF-Ready?
Ответы
Ответ 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