[New-bugs-announce] [issue18306] os.stat gives exception for Windows junctions in v3.3

John Jefferies report at bugs.python.org
Wed Jun 26 10:45:00 CEST 2013

New submission from John Jefferies:

If os.stat is executed on a Windows junction with Python 3.3 I see an exception:
>>> import os
>>> os.stat('C:\Windows\System32\config\systemprofile\SendTo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Windows\\System32\\config\\systemprofile\\SendTo'

whereas with Python 3.2 it works without error:
>>> import os
>>> os.stat('C:\Windows\System32\config\systemprofile\SendTo')
nt.stat_result(st_mode=16895, st_ino=281474977136630, st_dev=0, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1295885671, st_mtime=1295885671, st_ctime=1295885671)

FTR. Some background:
It's a pity that Python doesn't just treat Windows junctions as a normal soft link. But given that islink() returns False for a junction, I was able to work around that in Python 3.2 like this:
if os.path.islink(fullname) or \
    os.stat(fullname)[stat.ST_INO] != os.lstat(fullname)[stat.ST_INO]:
    # If it's not a link, it's probably a junction...

Many thanks for looking.


components: Library (Lib)
messages: 191899
nosy: John.Jefferies
priority: normal
severity: normal
status: open
title: os.stat gives exception for Windows junctions in v3.3
type: behavior
versions: Python 3.3

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list