Posted By: Anonymous
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?
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)
for chunk in iter(lambda: fp.read(n), ''): process(chunk)