os.path and Windows UNC paths
Trent Mick
trentm at ActiveState.com
Wed Jul 10 16:33:57 EDT 2002
[Tim Howarth wrote]
> I've been trying to use os.path.exists and os.path.isdir on
> Windows(2000) UNC paths with Python 2.2 but it doesn't seem to behanve
> sensibly.
>
There is a bug for this already:
http://python.org/sf/513572
I tend to use this function:
def _isdir(dirname):
"""os.path.isdir() doesn't work for UNC mount points. Fake it.
# For an existing mount point (want: _isdir() == 1)
os.path.ismount(r"\\crimper\apps") -> 1
os.path.exists(r"\\crimper\apps") -> 0
os.path.isdir(r"\\crimper\apps") -> 0
os.listdir(r"\\crimper\apps") -> [...contents...]
# For a non-existant mount point (want: _isdir() == 0)
os.path.ismount(r"\\crimper\foo") -> 1
os.path.exists(r"\\crimper\foo") -> 0
os.path.isdir(r"\\crimper\foo") -> 0
os.listdir(r"\\crimper\foo") -> WindowsError
# For an existing dir under a mount point (want: _isdir() == 1)
os.path.mount(r"\\crimper\apps\Komodo") -> 0
os.path.exists(r"\\crimper\apps\Komodo") -> 1
os.path.isdir(r"\\crimper\apps\Komodo") -> 1
os.listdir(r"\\crimper\apps\Komodo") -> [...contents...]
# For a non-existant dir/file under a mount point (want: _isdir() ==
# 0)
os.path.ismount(r"\\crimper\apps\foo") -> 0
os.path.exists(r"\\crimper\apps\foo") -> 0
os.path.isdir(r"\\crimper\apps\foo") -> 0
os.listdir(r"\\crimper\apps\foo") -> [] # as if empty contents
# For an existing file under a mount point (want: _isdir() == 0)
os.path.ismount(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 0
os.path.exists(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 1
os.path.isdir(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> 0
os.listdir(r"\\crimper\apps\Komodo\latest.komodo-devel.txt") -> WindowsError
"""
if sys.platform[:3] == 'win' and dirname[:2] == r'\\':
if os.path.exists(dirname):
return os.path.isdir(dirname)
try:
os.listdir(dirname)
except WindowsError:
return 0
else:
return os.path.ismount(dirname)
else:
return os.path.isdir(dirname)
--
Trent Mick
TrentM at ActiveState.com
More information about the Python-list
mailing list