os.path.getsize() on Windows
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Thu Mar 20 18:47:15 EDT 2008
On Thu, 20 Mar 2008 13:42:22 +0000, Duncan Booth wrote:
> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> wrote:
>
>> On Wed, 19 Mar 2008 12:34:34 +0000, Duncan Booth wrote:
>>> By default Python on Windows allows you to open a file for reading
>>> unless you specify a sharing mode which prevents it:
>>
>> But the OP is talking about another process having opened the file for
>> WRITING, not reading. It's that other process that has exclusive
>> access, and the OP was trying to determine when it was safe to attempt
>> opening the file according to whether or not it was still growing.
>>
> No, unless the other process has specified that it wants exclusive
> access there is nothing stopping his process also opening the file.
> That's why he has to specify when he opens it that he wants exclusive
> access: then it doesn't matter what the other process does, he won't be
> able to open it until the other process has closed the file.
I think you're confused. Or possibly I'm confused. Or both.
It seems to me that you're assuming that the OP has opened the file for
reading first, and *then* another process comes along and wants to open
it for writing. That's not how I read his post: he's trying to open a
file for reading while it is already being written to by another process.
Asking for exclusive access when reading isn't going to make any
difference, because the other process has already opened the file for
writing.
I suppose it is conceivable that the other process might have opened the
file for non-exclusive writing, assuming that such a thing is even
possible, but how likely is that?
> This all of course assumes that the other process writes the file in one
> single atomic chunk. If it were to create it and then separately open
> and write to it then all bets are off.
The OP is repeatedly polling the file to see when the size stops
increasing. Obviously a single atomic write is *not* taking place.
--
Steven
More information about the Python-list
mailing list