feof status (was: Re: [Python-Dev] Rehabilitating fgets)

Fredrik Lundh fredrik@effbot.org
Sun, 7 Jan 2001 22:29:46 +0100


Guido van Rossum wrote:
> Bizarre (given what I know about zero-length read). But in the above
> code, you can replace "if not fp.feof()" with "if line". In other
> words, you just have to carry the state over within your program.

and if that's too hard, just hide the state in
a class:
class FileWrapper:
 def __init__(self, file):
 self.__file = file
 self.__line = None
 def __more(self):
 # try reading another line
 if not self.__line:
 self.__line = self.__file.readline()
 def eof(self):
 self.__more()
 return not self.__line
 def readline(self):
 self.__more()
 line = self.__line
 self.__line = None
 return line
file = open("myfile.txt")
file = FileWrapper(file)
while not file.eof():
 print repr(file.readline())
</F>

AltStyle によって変換されたページ (->オリジナル) /