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'