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