How to find out whether a file is at its `eof`?

eof, file, python

Solution

`fp.read()` reads up to the end of the file, so after it's successfully finished you know the file is at EOF; there's no need to check. If it cannot reach EOF it will raise an exception.

When reading a file in chunks rather than with `read()`, you know you've hit EOF when `read` returns less than the number of bytes you requested. In that case, the following `read` call will return the empty string (not `None`). The following loop reads a file in chunks; it will call `read` at most once too many.

assert n > 0
while True:
    chunk = fp.read(n)
    if chunk == '':
        break
    process(chunk)

Or, shorter:

for chunk in iter(lambda: fp.read(n), ''):
    process(chunk)

Problem

``` fp = open("a.txt") #do many things with fp c = fp.read() if c is None: print 'fp is at the eof' ``` Besides the above method, any other way to find out whether is fp is already at the eof?

Original source

Related problems