[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