From 908632a6a67864aa67fc01b02973d6eb3af1ac6a Mon Sep 17 00:00:00 2001 From: Neil Schemenauer Date: Tue, 26 Mar 2002 20:28:40 +0000 Subject: [PATCH] Implement iterator protocol. --- Lib/fileinput.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Lib/fileinput.py b/Lib/fileinput.py index c18995b6b33..870322c5996 100644 --- a/Lib/fileinput.py +++ b/Lib/fileinput.py @@ -166,7 +166,10 @@ class FileInput: self.nextfile() self._files = () - def __getitem__(self, i): + def __iter__(self): + return self + + def next(self): try: line = self._buffer[self._bufindex] except IndexError: @@ -176,12 +179,18 @@ class FileInput: self._lineno += 1 self._filelineno += 1 return line - if i != self._lineno: - raise RuntimeError, "accessing lines out of order" line = self.readline() if not line: - raise IndexError, "end of input reached" + raise StopIteration return line + + def __getitem__(self, i): + if i != self._lineno: + raise RuntimeError, "accessing lines out of order" + try: + return self.next() + except StopIteration: + raise IndexError, "end of input reached" def nextfile(self): savestdout = self._savestdout