File.read() sometimes not reading everything
Donn Cave
donn at u.washington.edu
Thu Mar 11 12:03:03 EST 2004
In article <pan.2004.03.11.10.07.48.456622 at arteris.net>,
"Boris Boutillier" <boris.boutillier at arteris.net> wrote:
> I came across a strange behaviour with read method, and I'm not sure if
> this is a filesystem problem or a misuse of this method.
> I do the simple following thing :
> f = open ('myFile','r')
> content = f.read()
> f.close()
>
> When I use this lines really intensively sometimes, at random the content
> is not the full content, it lacks some lines at the end.
> When reading the file.read docstring I see that there can be some problems
> with non-blocking file, but I suppose open() is by default creating a blocking
> file.
>
> Is the file line-buffered by default ? This could be a reason for this
> early EOF, as I'm reading all the lines at once, and there is several
> lines in the file ?
No, a disk file will be block buffered. Not that it would matter.
Basically, the read method calculates the size of the file and tries
to fread(3) that amount. The only explanation I can think of (other
than an error somewhere) is a concurrent change to the file.
Donn Cave, donn at u.washington.edu
More information about the Python-list
mailing list