Lire l'entrée redirigé depuis stdin avec python
J'ai cette boucle qui lit les lignes à partir de stdin, jusqu'à un retour à la ligne est entré, cependant, cela ne fonctionne que de taper dans l'entrée. Comment puis-je obtenir le programme pour lire les lignes d'un redirigé stdin via la ligne de commande?
Par exemple:
$ python graph.py < input.input
Voici la boucle que j'ai à lire les lignes de l'entrée:
while 1:
line = sys.stdin.readline()
if line == '\n':
break
try:
lines.append(line.strip())
except:
pass
Comment est-il pas de travail?
Le programme se bloque à la deuxième ligne de la boucle et de ne pas cesser de fumer, à moins que je l'interrompre avec le clavier.
Êtes-vous sûr que votre fichier se termine par un '\n'? Vous êtes probablement en cours d'exécution dans une boucle infinie ici. Il est probable que votre fichier se termine avec un
Le programme se bloque à la deuxième ligne de la boucle et de ne pas cesser de fumer, à moins que je l'interrompre avec le clavier.
Êtes-vous sûr que votre fichier se termine par un '\n'? Vous êtes probablement en cours d'exécution dans une boucle infinie ici. Il est probable que votre fichier se termine avec un
''
ligne.OriginalL'auteur Christian Benincasa | 2012-03-06
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont mentionné, probablement votre condition
line == '\n'
ne tient jamais vrai. La bonne solution serait d'utiliser une boucle comme:OriginalL'auteur Niklas B.
ETA: sur la Base des commentaires que vous êtes en cours d'exécution dans une boucle infinie, vous avez probablement juste de ne pas avoir une ligne vide à la fin du fichier.
Utiliser un pipe caractère:
Si
input.input
est en fait un fichier au lieu d'un flux, utilisez chat pour créer un flux à partir de:Niklas: voir modifier
OriginalL'auteur David Robinson