OVH Cloud OVH Cloud

Problème avec __stdin__

2 réponses
Avatar
Nicolas Maupu
Bonjour à tous !

J'ai un petit souci avec la lecture de sys.stdin.
Je souhaite faire un programme qui effectue quelques traitements sur
l'entrée standard. J'explique :

Le programme doit s'exécuter comme suit :
cat file | python prog.py

Je lis l'entrée en faisant :
for i in sys.stdin:
#lecture ligne par ligne de stdin
print i

Le problème est que quand le programme est appelé direct par:
python prog.py, il bloque indefiniement.

Comment tester si stdin contient quelque chose pour éviter de bloquer ?

Merci

--
Nico

2 réponses

Avatar
kaerbuhez
Bonjour à tous !

J'ai un petit souci avec la lecture de sys.stdin.
Je souhaite faire un programme qui effectue quelques traitements sur
l'entrée standard. J'explique :

Le programme doit s'exécuter comme suit :
cat file | python prog.py

Je lis l'entrée en faisant :
for i in sys.stdin:
#lecture ligne par ligne de stdin
print i

Le problème est que quand le programme est appelé direct par:
python prog.py, il bloque indefiniement.

Comment tester si stdin contient quelque chose pour éviter de bloquer ?


if not sys.stdin.isatty():
# sys.stdin reçoit un fichier "non interactif"
for line in sys.stdin:
#lecture ligne par ligne de stdin
print line

Avatar
Nicolas Maupu

if not sys.stdin.isatty():
# sys.stdin reçoit un fichier "non interactif"
for line in sys.stdin:
#lecture ligne par ligne de stdin
print line
Excellent, ça fonctionne !

Merci beaucoup ;)

--
Nico