Is there a function that can test if a path is in a directory or one of its sub-directory (recursively)?

Dave Angel davea at
Fri Nov 6 22:08:49 CET 2009

Chris Rebert wrote:
> On Thu, Nov 5, 2009 at 10:49 PM, Gabriel Genellina
> <gagsl-py2 at> wrote:
>> En Fri, 06 Nov 2009 00:53:14 -0300, Chris Rebert <clp2 at>
>> escribió:
>>> On Thu, Nov 5, 2009 at 7:41 PM, Peng Yu <pengyu.ut at> wrote:
>>>> I looked though the os.path manual. I don't find a function that can
>>>> test if a path is in a directory or its sub-directory (recursively).
>>>> For example, /a/b/c/d is in /a its sub-directory (recursively). Could
>>>> somebody let me know if such function is available somewhere?
>>> Couldn't you just canonicalize the paths using os.path.abspath() and
>>> friends and then do subdirectory.startswith(parent_directory) [as
>>> strings]?
>> Beware of directories starting with the same letters.
>> I'd canonicalize, split the strings on os.sep, and compare the resulting
>> lists up to the shortest one.
> Ah, I thought there was some edge case I must've missed; my solution
> seemed too simple.
> Cheers,
> Chris
But you can probably add a trailing '/' (os.sep) to the shorter string 
before doing the startswith().


More information about the Python-list mailing list