Wie kann man in Python das Ende von Standardeingabestreams (sys.stdin) überprüfen und etwas Besonderes tun?

Ich möchte etwas machen wie:

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

Nach ein paar Versuchen mache ich das jetzt:

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

Oder damit:

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

Ich denke, beide oben genannten Möglichkeiten sind sehr ähnlich. Ich möchte wissen, ob es einen eleganteren (pythonischen) Weg gibt, dies zu tun.

Frühe fehlgeschlagene Versuche:

Ich habe zuerst versucht, die zu fangenStopIteration von innen oder außen afor Schleife, aber ich merke bald, dass seit demStopIteration Ausnahme isteingebaut for Schleife selbst, beide folgenden Code-Snippet hat nicht funktioniert.

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

oder

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage