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'