J
Jan Burgy
Hi all y'all,
Consider the class down below. I've implemented it just because I
needed the pushback method. Now of course the third line in __init__
doesn't work and I even understand why. My question is: is there any
way to make it work? Somebody proposed a patch for fileobject.c to
allow stuff like fp = file(fp1.fileno()) but it looks like it's been
rejected. I won't so bold as to request a change in Python. Should I
try to re-write this class in C? Although I know C I'm much to lazy to
take on the entire python API, not that it doesn't look nice.
Thanks for your help
Jan Burgy
class BufferedFile(file):
def __init__(self, name):
if type(name) == file:
self = name # DOESN'T WORK!
else:
file.__init__(self, name)
self.buffer = None
def readline(self):
if self.buffer:
i = self.buffer.find("\n")
line, self.buffer = self.buffer[:i], self.buffer[:i+1]
else:
line = file.readline(self)
return line
def pushback(self, line):
self.buffer = line + self.buffer
Consider the class down below. I've implemented it just because I
needed the pushback method. Now of course the third line in __init__
doesn't work and I even understand why. My question is: is there any
way to make it work? Somebody proposed a patch for fileobject.c to
allow stuff like fp = file(fp1.fileno()) but it looks like it's been
rejected. I won't so bold as to request a change in Python. Should I
try to re-write this class in C? Although I know C I'm much to lazy to
take on the entire python API, not that it doesn't look nice.
Thanks for your help
Jan Burgy
class BufferedFile(file):
def __init__(self, name):
if type(name) == file:
self = name # DOESN'T WORK!
else:
file.__init__(self, name)
self.buffer = None
def readline(self):
if self.buffer:
i = self.buffer.find("\n")
line, self.buffer = self.buffer[:i], self.buffer[:i+1]
else:
line = file.readline(self)
return line
def pushback(self, line):
self.buffer = line + self.buffer