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'

Respuestas a la pregunta(2)

Su respuesta a la pregunta