]> granicus.if.org Git - python/commitdiff
Implement iterator protocol.
authorNeil Schemenauer <nascheme@enme.ucalgary.ca>
Tue, 26 Mar 2002 20:28:40 +0000 (20:28 +0000)
committerNeil Schemenauer <nascheme@enme.ucalgary.ca>
Tue, 26 Mar 2002 20:28:40 +0000 (20:28 +0000)
Lib/fileinput.py

index c18995b6b33bbcb240ac6a8596e8dfc502d5b318..870322c5996dcdb443c797c398b800c416b0b14d 100644 (file)
@@ -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