On Fri, 24 Sep 2010 11:13:46 +0100, Chris Withers <ch...@simplistix.co.uk> wrote: > On 18/09/2010 23:36, Guido van Rossum wrote: > > course, exists() and isdir() etc. do, and so does realpath(), but the > > pure parsing functions don't. > > Yes, but: > > H:\>echo foo > TeSt.txt > ...>>> import os.path > >>> os.path.realpath('test.txt') > 'H:\\test.txt' > >>> os.path.normcase('TeSt.txt') > 'test.txt' > > Both feel unsatisfying to me :-S > > How can I get 'TeSt.txt' from 'test.txt' (which feels like the contract > normcase *should* have...)
You can't, and you shouldn't be able to. "normalization" is something that happens without reference to existing objects, the whole point is to put the thing into "standard form" so that you can compare strings obtained from different sources and know that they will represent the same object on that filesystem. > > They can be used without a working > > filesystem even. (E.g. you can import ntpath on a Unix box and happily > > parse Windows paths.) > > But what value does that add over just doing a .lower() on the path? It does what is appropriate for that....oh, yeah. For that OS, not "for that filesystem". (e.g. on Unix normcase does nothing since files with different cases but the same letters are different files.) Being os specific rather than file system type specific is the usability bug. But to fix it we'll need to introduce a 'filesystems' module enumerating the different file systems we support, with tools for figuring out what filesystem your program is talking to. But normacase still, wouldn't (shouldn't) do what you want. -- R. David Murray www.bitdance.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com