В Python, как проверить конец стандартных входных потоков (sys.stdin) и сделать что-то особенное на этом

Я хочу сделать что-то вроде:

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

После нескольких попыток сейчас я делаю это:

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

Или с этим:

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

Я думаю, что оба вышеупомянутых способа очень похожи. Я хочу знать, есть ли более элегантный (питонический) способ сделать это?

Ранние неудачные попытки:

Сначала я попытался пойматьStopIteration изнутри или снаружиfor петля, но я скоро понимаю, что сStopIteration исключениевстроить в for Сам цикл, оба фрагмента кода не работали.

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

или же

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

Ответы на вопрос(2)

Ваш ответ на вопрос