On Nov 23, 10:43 pm, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> This is not the same as ISO C. f.tell could be equal to > File.size(f.path) and eof could be false. An extra read() is required. My bad. As you might have surmised, I'm not a genius when it comes to C. I thought that the eof flag was set when the pointer into the stream was the same as the length of the stream, but I guess it makes since that as an error flag, it would only be set after an attempted read past the end of the stream (in which case, I guess you'd get a NULL from the read, equivalent to python's empty string?). Ps. braver, if you really want a ruby-like eof method on file objects in python, how about overriding the open() alias with a file subclass including eof? import os class open(file): def __init__(self, name): self.size = os.stat(name).st_size file.__init__(self, name) def eof(self): return self.tell() == self.size f = open('tmp.py') print f.eof() # False f.read() print f.eof() # True Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list