Mon code actuel lit les entrées utilisateur jusqu'au saut de ligne. Mais j'essaie de changer cela en un format, où l'utilisateur peut écrire une entrée jusqu'à strg + d pour terminer son entrée.
Je le fais actuellement comme ceci:
input = raw_input ("Input: ")
Mais comment puis-je changer cela en une version compatible EOF?
Utilisez file.read
:
input_str = sys.stdin.read()
Selon la documentation:
file.read([size])
Lire au plus octets de taille à partir du fichier (moins si la lecture atteint EOF avant d'obtenir des octets de taille). Si l'argument taille est négatif ou omis, lire toutes les données jusqu'à EOF est atteint.
>>> import sys
>>> isinstance(sys.stdin, file)
True
BTW, n'utilisez pas input
comme nom de variable. Il masque la fonction intégrée input
.
Cela a fonctionné pour moi dans Python 3:
from sys import stdin
for line in stdin:
print(line)
Vous pouvez également effectuer les opérations suivantes:
acc = []
out = ''
while True:
try:
acc.append(raw_input('> ')) # Or whatever Prompt you prefer to use.
except EOFError:
out = '\n'.join(acc)
break
Avec sys.stdin.readline()
vous pourriez écrire comme ceci:
import sys
while True:
input_ = sys.stdin.readline()
if input_ == '':
break
print type(input_)
sys.stdout.write(input_)
N'oubliez pas, quelle que soit votre entrée, c'est une chaîne.
Pour raw_input
ou input
version, écrivez comme ceci:
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