I don't think this has been mentioned before, but using deque
from collections
and reverse
works for me:
from collections import deque
fs = open("test.txt","rU")
fr = deque(fs)
fr.reverse() # reverse in-place, returns None
for li in fr:
print li
fs.close()