Please help me finding a way to implement os.path.issubpath(a, b)

Giampaolo Rodola' gnewsg at gmail.com
Fri Sep 12 14:37:47 CEST 2008


On Sep 11, 8:04 pm, Arnaud Delobelle <arno... at googlemail.com> wrote:
> On Sep 11, 5:40 pm, "Giampaolo Rodola'" <gne... at gmail.com> wrote:
>
>
>
> > Hi,
> > I'm trying to implement a function which returns whether a path is a
> > subpath of another one (e.g. /a/b/c is a subpath of /a/b).
> > I wrote this function which apparently seems to work fine:
>
> > import os
>
> > def issubpath(path1, path2):
> >     """Return True if path1 is a sub path of path2."""
> >     if path1 == path2:
> >         return False
> >     x1 = path1.split(os.sep)
> >     x2 = path2.split(os.sep)
> >     return x1[:len(x2)] == x2
>
> > ...but if I use "issubpath('C:\\dir', 'C:\\')" it returns False.
> > A little help would be appreciated.
>
> > Thanks in advance.
>
> That's because:
>
> >>> 'C:\\dir'.split('\\')
> ['C:', 'dir']
> >>> 'C:\\'.split('\\')
>
> ['C:', '']
>
> So you could write instead something like
>
>     x1 = path1.rstrip(os.sep).split(os.sep)
>     x2 = path2.rstrip(os.sep).split(os.sep)
>
> in your function
>
> HTH
>
> --
> Arnaud

Thanks, it seems to work just fine.


--- Giampaolo
http://code.google.com/p/pyftpdlib/



More information about the Python-list mailing list