В 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'