Limitation of os.walk

kj no.email at please.post
Wed May 12 14:52:41 EDT 2010


In <mailman.86.1273631889.32709.python-list at python.org> Tim Chase writes:
>  05/11/2010 09:07 PM, Terry Reedy wrote:
>> If os.walk were rewritten, it should be as an iterator (generator).
>> Directory entry and exit functions could still be added as params.

>It *is* an iterator/generator.  However, I suspect you mean that 
>it should slurp the dirs/files iteratively instead of using 
>listdir() as was discussed on c.l.p a few months back.

Thanks for mentioning this thread.  Very interesting stuff.  Apropos
the implementability of an iterative listdir, I wonder if some
variation of glob.iglob() would fit the bill.  (Maybe it's too
slow, though.)

>I suspect if I thought about it much longer, only one would 
>really be needed, the other accommodated by the "topdown" parameter.

Yeah, I think one only needs a post hook.  The fact that it's a
generator obviates need for a pre hook, since the yield returns
control to the calling function right around where the pre-hook
would run anyway.  For the same reason, the post hook is needed
only for the case topdown=True.

Another useful callback would be one that replaced listdir in the
generation of the current directory's contents.

~K



More information about the Python-list mailing list