The Python docs on file.read() state that An empty string is returned when EOF is encountered immediately. The documentation further states:

Note that this method may call the underlying C function fread() more than once in an effort to acquire as close to size bytes as possible. Also note that when in non-blocking mode, less data than was requested may be returned, even if no size parameter was given.

I believe Guido has made his view on not adding f.eof() PERFECTLY CLEAR so need to use the Python way!

What is not clear to ME, however, is if it is a definitive test that you have reached EOF if you receive less than the requested bytes from a read, but you did receive some.

ie:

with open(filename,'rb') as f:
    while True:
        s=f.read(size)
        l=len(s) 
        if l==0: 
            break     # it is clear that this is EOF...
        if l<size:
            break      # ? Is receiving less than the request EOF???

Is it a potential error to break if you have received less than the bytes requested in a call to file.read(size)?

Edit
Report