eof
Hrvoje Niksic
hniksic at xemacs.org
Thu Nov 22 10:37:04 EST 2007
braver <deliverable at gmail.com> writes:
> On Nov 22, 6:10 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
>> Granted, they aren't part of the stdlib - but then, lots
>> of things aren't.
>
> As Hendrik noticed, I can't even add my own f.eof() if I want to
> have buffering -- is that right?
You can, you just need to inherit from built-in file type. Then
instances of your class get the __dict__ and with it the ability to
attach arbitrary information to any instance. For example:
class MyFile(file):
def __init__(self, *args, **kwds):
file.__init__(self, *args, **kwds)
self.eof = False
def read(self, size=None):
if size is None:
val = file.read(self)
self.eof = True
else:
val = file.read(self, size)
if len(val) < size:
self.eof = True
return val
def readline(self, size=None):
if size is None:
val = file.readline(self)
else:
val = file.readline(self, size)
if len(val) == 0:
self.eof = True
return val
The code needed to support iteration is left as an excercise for the
reader.
More information about the Python-list
mailing list