postprocessing in os.walk

Dave Angel davea at ieee.org
Mon Oct 12 07:31:47 EDT 2009


kj wrote:
> Perl's directory tree traversal facility is provided by the function
> find of the File::Find module.  This function accepts an optional
> callback, called postprocess, that gets invoked "just before leaving
> the currently processed directory."  The documentation goes on to
> say "This hook is handy for summarizing a directory, such as
> calculating its disk usage", which is exactly what I use it for in
> a maintenance script.
>
> This maintenance script is getting long in the tooth, and I've been
> meaning to add a few enhancements to it for a while, so I thought
> that in the process I'd port it to Python, using the os.walk
> function, but I see that os.walk does not have anything like this
> File::Find::find's postprocess hook.  Is there a good way to simulate
> it (without having to roll my own File::Find::find in Python)?
>
> TIA!
>
> kynn
>
>   
Why would you need a special hook when the os.walk() generator yields 
exactly once per directory?  So whatever work you do on the list of 
files you get, you can then put the summary logic immediately after.

Or if you really feel you need a special hook, then write a wrapper for 
os.walk(), which takes a hook function as a parameter, and after 
yielding each file in a directory, calls the hook.  Looks like about 5 
lines.

DaveA



More information about the Python-list mailing list