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

Chris Rebert clp2 at rebertia.com
Fri Nov 6 03:19:56 EST 2009


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



More information about the Python-list mailing list