On 07/11/2010 03:37 PM, Gelonida wrote: > ################################################# > import os > def is_below_dir(fname,topdir): > relpath = os.path.relpath(fname,topdir) > return not relpath.startswith('..'+os.sep) > > print is_below_dir(path1,path2) > ################################################# > The basic idea is, if the path name of path1 > relative to path2 does NOT start with '..', then > it must be below path2 > > > Does anybody see pitfalls with that solution? > Is there by any chance a function, that I overlooked, > which does already what I'd like to do?
It probably won't work on Windows because it isolates volumes (drive letters). What does, for example, os.path.relpath do when you pass r'c:\foo\bar', r'y:\drive\letters\are\silly' ? I see two reasonably correct options: either raise an exception (there is no relative path) or return the absolute path, which doesn't start with .. On UNIX, the only potential problem I see is that it may or may not do what you expect when symlinks are involved somewhere. -- http://mail.python.org/mailman/listinfo/python-list