diff -r befd56673c80 Lib/fileinput.py --- a/Lib/fileinput.py Sun May 20 02:34:13 2012 +1000 +++ b/Lib/fileinput.py Fri Jun 15 17:16:43 2012 +0300 @@ -220,6 +220,7 @@ self._backupfilename = None self._buffer = [] self._bufindex = 0 + self._eof = False # restrict mode argument to reading modes if mode not in ('r', 'rU', 'U', 'rb'): raise ValueError("FileInput opening mode must be one of " @@ -296,6 +297,7 @@ self._isstdin = False self._buffer = [] self._bufindex = 0 + self._eof = False def readline(self): try: @@ -353,7 +355,15 @@ self._file = self._openhook(self._filename, self._mode) else: self._file = open(self._filename, self._mode) + + if self._eof: + self.nextfile() + return self.readline() + self._buffer = self._file.readlines(self._bufsize) + if sum(map(len, self._buffer)) < self._bufsize: + self._eof = True + self._bufindex = 0 if not self._buffer: self.nextfile()