Em python, como verificar o final dos fluxos de entrada padrão (sys.stdin) e fazer algo especial nisso

Eu quero fazer algo como:

for line in sys.stdin:
    do_something()
    if is **END OF StdIn**:
        do_something_special()

Depois de algumas tentativas, por enquanto estou fazendo o seguinte:

while True:
    try:
        line = sys.stdin.next()
        print line,
    except StopIteration:
        print 'EOF!'
        break

Ou com isso:

while True:
    line = sys.stdin.readline()
    if not line:
        print 'EOF!'
        break
    print line,

Eu acho que as duas formas acima são muito semelhantes. Eu quero saber se existe uma maneira mais elegante (pitônica) de fazer isso?

Tentativas com falha inicial:

Eu primeiro tentei pegar oStopIteration de dentro ou de fora de umfor loop, mas logo percebo que desde oStopIteration exceção éincorporado for próprio loop, os dois fragmentos de código a seguir não funcionaram.

try:
    for line in sys.stdin:
        print line,
except StopIteration:
    print 'EOF'

ou

for line in sys.stdin:
    try:
        print line,
    except StopIteration:
        print 'EOF'

questionAnswers(2)

yourAnswerToTheQuestion