GiBo wrote: > Hi! > > Classic situation - I have to process an input stream of unknown length > until a I reach its end (EOF, End Of File). How do I check for EOF? > [...] > I'd better like something like: > > while not stream.eof(): > ...
Is there a reason why some classes distributed with Python 2.5 are not new-style classes? For instance StringIO is apparently "old-style" class i.e. not inherited from "object". Can I somehow turn an existing old-style class to a new-style one? I tried for example: class MyStreamIO(StreamIO, object): pass but got an error. Is my only chance taking StringIO.py from python tree, adding "(object)" to the class declaration and distributing it with my source? FWIW I created a wrapper class that does what I need with the EOF problem in quite elegant way, but due to __getattribute__() stuff it only works with new-style classes :-( class MyStreamer(object): def __init__(self, stream): self._stream = stream self.eof = False def read(self, amount = None): data = self._stream.read(amount) if len(data) == 0: self.eof = True raise EOFError return data def __getattribute__(self, attribute): try: return object.__getattribute__(self, attribute) except AttributeError: pass return self._stream.__getattribute__(attribute) GiBo -- http://mail.python.org/mailman/listinfo/python-list