En Tue, 05 May 2009 12:55:13 -0300, spillz <damienlmo...@gmail.com> escribió:
/my/path/to/usbkey/and/file everything up to "/my/path/to/usbkey" is case sensitive. only the "and/ file" is case insensitive. but my list of stored paths might include all images under "/my". thus /my/path/to/usbkey/and/file1==/my/path/to/usbkey/and/FILE1 /my/path/to/usbkey/and/file1==/my/path/to/usbkey/AND/FILE1 but /my/path/to/usbkey/and/file1!=/my/path/TO/usbkey/AND/FILE1 so to do this right I'd need to establish which parts of the path are case insensitive. being able to retrieve the actual path from an equivalent representation would be so much simpler.
I use this function on Windows to obtain the true case name of a file: <code> from win32api import FindFiles from win32file import FILE_ATTRIBUTE_DIRECTORY from os.path import normpath, split, join def truecase(fullpath, _cache={}): """ Normalize fullpath, returning names using the same case as actually used in the filesystem. """ fullpath = normpath(fullpath) dirname, filename = split(fullpath) dirname = dirname.lower() if not filename: # drive letter result = _cache[dirname] = dirname.upper() return result if dirname in _cache: dirname = _cache[dirname] elif dirname: dirname = truecase(dirname) finddata = FindFiles(fullpath) if not finddata: import errno, os raise IOError(errno.ENOENT, os.strerror(errno.ENOENT), fullpath) if len(finddata)!=1: raise ValueError("Too many results for %r" % fullpath) attr = finddata[0][0] filename = finddata[0][8] result = join(dirname, filename) if attr & FILE_ATTRIBUTE_DIRECTORY: _cache[result.lower()] = result return result </code> truecase("c:")=="C:" truecase("C:\\")=="C:\\" truecase("c:\\")=="C:\\" truecase("C:\\TeMp")=="C:\\TEMP" truecase("C:\\TeMp\\")=="C:\\TEMP\\" truecase(r"C:\Documents and Settings\gabriel")==r"C:\Documents and Settings\gabriel" truecase(r"c:\dOcUmEnTs aNd SeTtInGs\GaBrIeL\mIS DOCUMENTOS\105_3 - nist - sPECIFICATIONS vOLUMETRIC fIELD sTANDARD.PDF")==r"C:\Documents and Settings\gabriel\Mis documentos\105_3 - NIST - Specifications Volumetric Field Standard.pdf" truecase(r"E:\prog\test\compface\Debug\No existe.txt") -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list