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

Arnaud Delobelle arnodel at googlemail.com
Thu Sep 11 20:04:20 CEST 2008


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




More information about the Python-list mailing list