[Python-ideas] PEP 428 - object-oriented filesystem paths
Greg Ewing
greg.ewing at canterbury.ac.nz
Mon Oct 8 00:55:26 CEST 2012
Antoine Pitrou wrote:
> On Sun, 7 Oct 2012 22:43:02 +0100
> Arnaud Delobelle <arnodel at gmail.com>
> wrote:
>
>>Naive question: how do you deal with HFS+, which is case-preserving
>>but on most machines case-insensitive?
>
> I don't know. How does os.path deal with it?
Not all that well, apparently. From the docs for os.path:
os.path.normcase(path)
Normalize the case of a pathname. On Unix and Mac OS X, this returns the
path unchanged; on case-insensitive filesystems, it converts the path to
lowercase. On Windows, it also converts forward slashes to backward slashes.
This is partially self-contradictory, since many MacOSX filesystems are
actually case-insensitive; it depends on the particular filesystem concerned.
Worse, different parts of the same path can have different case sensitivities.
Also, with network file systems, not all paths are necessarily case-insensitive
on Windows.
So there's really no certain way to compare pure paths for equality. Basing
it on which OS is running your code is no more than a guess.
--
Greg
More information about the Python-ideas
mailing list