help needed on generator

Miki Tebeka tebeka at lycosmail.com
Thu May 9 05:00:55 EDT 2002


Gon?lo Rodrigues <op73418 at mail.telepac.pt> wrote in message news:<5lijdu8recmu4sgrmgq1m95fgqg8p3brjg at 4ax.com>...
> Hi,
> 
> I've coded this generator to traverse a directory tree. 
> 
> #Import generators.
> from __future__ import generators
> 
> #Import modules.
> import os, sys
> 
> def true(*args, **kwargs):
>     """The identically true function."""
>     return 1
> 
> def dirtree(root, predicate = true):
>     """Visit a directory tree, using a generator.
> 
>     A predicate can be provided to trim the directories visited."""
> 
>     #Yield root dir.
>     if predicate(root):
>         yield root
> 
>     #Recurse into subdirectories.
>     for dirname in [dir for dir in os.listdir(root) if
> os.path.isdir(dir)]:
>         if predicate(dirname):
          # CHANGE HERE
              for d in dirtree(os.path.join(root, dirname), predicate):
                  yield d
> 
> 
> if __name__ == '__main__':
>     try:
>         root = sys.argv[1]
>     except IndexError:
>         root = os.getcwd()
> 
>     for dir in dirtree(root):
>         print dir
> 
> When I feed "C:" to the sucker (run as script) only "C:" gets printed.
> Can anyone point out to me what I am doing wrong?
> 
> P.S: I want to keep the order: first yield the directory then go and
> visit the childs.
> 
> Thanks in advance and best regards,
> Gonçalo Rodrigues

HTH
Miki



More information about the Python-list mailing list