Brad Dutton wrote: > I recently discovered how to read from a file but I've having some trouble > with it. I made a short example program that goes like this: > > > 1. fob = open('c:/python27/a.txt', 'r') > 2. > 3. print fob.read() > 4. print fob.read() > > When it runs it returns this: > > > 1. Hey now brown cow > 2. > > It's like it forgets how to read after the first time. This has left me > very confused. Could you offer any reason why this might be happening?
The open file, 'fob' maintains a pointer into the file that is moved by read operations: >>> fob = open("a.txt") >>> fob.read(3) 'Hey' >>> fob.read(3) ' no' >>> fob.read(3) 'w b' If you call the read method without argument the complete (remaining) file is read and following read calls will not give any data to read: >>> fob.read() 'rown cow\n' >>> fob.read() '' Most of the time the best approach is to open a new file >>> for i in range(3): ... with open("a.txt") as f: print f.read().strip() ... Hey now brown cow Hey now brown cow Hey now brown cow but it is also possible to move the pointer back to the beginning to the file (or elsewhere): >>> fob.seek(4) >>> fob.read() 'now brown cow\n' >>> fob.seek(0) >>> fob.read() 'Hey now brown cow\n' _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor