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?