os.path.walk -- Can You Limit Directories Returned?
Gary Herron
gherron at islandtraining.com
Thu Jun 5 03:41:08 EDT 2008
Jeff Nyman wrote:
> Greetings all.
>
> I did some searching on this but I can't seem to find a specific
> solution. I have code like this:
>
> =========================================
> def walker1(arg, dirname, names):
> DC_List.append((dirname,''))
>
> os.path.walk('\\\\vcdcflx006\\Flex\\Sites', walker1, 0)
> =========================================
>
> The Sites\ directory is set up like this:
>
> Sites\
> Baltimore
> Birmingham
> ....
>
> And so forth. Each of the city directories has directories under it as
> well. The problem is that my code grabs every single directory that is
> under the various city directories when what I really want it to do is
> just grab the directories that are under Sites\ and that's it. I don't
> want it to recurse down into the sub-directories of the cities.
>
> Is there a way to do this? Or is os.path.walk not by best choice here?
>
Yes. But first, use the more modern iterator os.walk instead of the
older function calling os.path.walk. Then in either case (or at least
for the os.walk -- I'm a little rusty on the older os.path.walk) you can
modify in-place the subdirectory listing that was passed to you, thereby
controlling which subdirectories the walk follows.
Here's some examples:
for path, dirs, files in os.walk(root):
if 'etc' in dirs:
dirs.remove('etc') # Skip any directory named 'etc'
if path == 'whatever':
del dirs[:] # Clearing dirs means recurse into NO
subdirectory of path
... process the files of directory path...
Gary Herron
> Any help and/or advice would be appreciated.
>
> - Jeff
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list