[Tutor] Question about reading from a file.

Peter Otten __peter__ at web.de
Tue Aug 7 10:45:46 CEST 2012


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'




More information about the Tutor mailing list