[ python-Bugs-1686475 ] os.stat() WindowsError 13 when file in use

SourceForge.net noreply at sourceforge.net
Mon Apr 30 03:54:06 CEST 2007


Bugs item #1686475, was opened at 2007-03-23 02:31
Message generated for change (Comment added) made by abkhd
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1686475&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.5
Status: Closed
Resolution: Fixed
Priority: 5
Private: No
Submitted By: d roberts (dcroberts)
Assigned to: Martin v. Löwis (loewis)
Summary: os.stat() WindowsError 13 when file in use

Initial Comment:
Using 2.5 Sept 19, 2006 on Windows XP, 32-bit.

os.stat() on an "in use" file (i.e., open by another process) erroneously returns WindowsError [Error 13]. The file stats should be available on an open file, even if you cannot read/write the file itself.

Python 2.4 correctly returns the stats on the file.

----------------
CORRECT in 2.4:
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
>>> import os
>>> os.stat('c:\\hiberfil.sys')
(33206, 0L, 2, 1, 0, 0, 804311040L, 1173962381, 1173962381, 1069302780)

-----------------
ERROR in 2.5:
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
>>> import os
>>> os.stat("c:\\hiberfil.sys")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
WindowsError: [Error 13] The process cannot access the file because it is being
used by another process: 'c:\\hiberfil.sys'

----------------------------------------------------------------------

Comment By: A.B., Khalid (abkhd)
Date: 2007-04-30 01:54

Message:
Logged In: YES 
user_id=1079026
Originator: NO

Please see http://www.python.org/sf/1709112 for comment and patch.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-04-04 18:31

Message:
Logged In: YES 
user_id=21627
Originator: NO

I have now committed this patch as r54685 and r54686.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-30 06:29

Message:
Logged In: YES 
user_id=21627
Originator: NO

Attached is a patch that makes it fall back to FindFirstFile if
GetFileAttributesEx fail with ERROR_SHARING_VIOLATION.
File Added: stat.diff

----------------------------------------------------------------------

Comment By: d roberts (dcroberts)
Date: 2007-03-23 17:49

Message:
Logged In: YES 
user_id=1750755
Originator: YES

Taking your hint, I just looked at the code in 42230 which uses the Win32
GetFileAttributesEx() function. This function does indeed return an error
for an in-use file. Not sure if this is a "feature" or "bug" in the
underlying Windows function. I did try FindFirstFile(), which is able to
return info on an in-use file. Not sure if this is a reasonable alternative
to GFAE(), but wanted to make folks aware of the possibility. It's probably
slower, since it can handle wild-cards, and returns a handle for subsequent
calls to FindNextFile(). The handle must be closed with FindClose(). I'm
not sure what underlying mechanism FindFirstFile() uses, but I'm assuming
it accesses the "directory" to get its information, rather than trying to
access the file itself. FWIW.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2007-03-23 10:24

Message:
Logged In: YES 
user_id=21627
Originator: NO

It certainly is; Python is likely opening the file in the wrong mode now.
I'll investigate, although contributions would be welcome.

----------------------------------------------------------------------

Comment By: Georg Brandl (gbrandl)
Date: 2007-03-23 10:15

Message:
Logged In: YES 
user_id=849994
Originator: NO

May this be related to rev. 42230 - "Drop C library for stat/fstat on
Windows." ?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1686475&group_id=5470


More information about the Python-bugs-list mailing list