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 ieee.org
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 yahoo.com.ar> wrote:
>   
>> En Fri, 06 Nov 2009 00:53:14 -0300, Chris Rebert <clp2 at rebertia.com>
>> escribió:
>>     
>>> On Thu, Nov 5, 2009 at 7:41 PM, Peng Yu <pengyu.ut at gmail.com> 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().

DaveA



More information about the Python-list mailing list