how to determine whether pathname1 is below bathname2
Thomas Jollans
thomas at jollans.com
Sun Jul 11 09:52:09 EDT 2010
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.
More information about the Python-list
mailing list