En python, cómo verificar el final de las secuencias de entrada estándar (sys.stdin) y hacer algo especial al respecto
Quiero hacer algo como:
for line in sys.stdin:
do_something()
if is **END OF StdIn**:
do_something_special()
Después de algunos intentos, por ahora estoy haciendo esto:
while True:
try:
line = sys.stdin.next()
print line,
except StopIteration:
print 'EOF!'
break
O con esto:
while True:
line = sys.stdin.readline()
if not line:
print 'EOF!'
break
print line,
Creo que las dos formas anteriores son muy similares. Quiero saber si hay una forma más elegante (pitónica) de hacer esto.
Intentos fallidos tempranos:Primero intenté atrapar elStopIteration
desde adentro o afuera de unfor
bucle, pero pronto me doy cuenta de que desde elStopIteration
la excepción esconstruir en for
bucle en sí, los dos siguientes fragmentos de código no funcionaron.
try:
for line in sys.stdin:
print line,
except StopIteration:
print 'EOF'
o
for line in sys.stdin:
try:
print line,
except StopIteration:
print 'EOF'