list comprehension to do os.path.split_all ?

Ian Kelly ian.g.kelly at gmail.com
Thu Jul 28 16:44:15 EDT 2011


On Thu, Jul 28, 2011 at 2:18 PM, gry <georgeryoung at gmail.com> wrote:
> [python 2.7] I have a (linux) pathname that I'd like to split
> completely into a list of components, e.g.:
>   '/home/gyoung/hacks/pathhack/foo.py'  -->  ['home', 'gyoung',
> 'hacks', 'pathhack', 'foo.py']
>
> os.path.split gives me a tuple of dirname,basename, but there's no
> os.path.split_all function.
>
> I expect I can do this with some simple loop, but I have such faith in
> the wonderfulness of list comprehensions, that it seems like there
> should be a way to use them for an elegant solution of my problem.
> I can't quite work it out.  Any brilliant ideas?   (or other elegant
> solutions to the problem?)

path = '/home/gyoung/hacks/pathhack/foo.py'
parts = [part for path, part in iter(lambda: os.path.split(path), ('/', ''))]
parts.reverse()
print parts

But that's horrendously ugly.  Just write a generator with a while
loop or something.



More information about the Python-list mailing list