On Wed, Jun 10, 2009 at 2:28 AM, spir<[email protected]> wrote:
> Hello,
>
> A foolow-up ;-) from previous question about glob.glob().
>
> I need to 'glob' files recursively from a top dir (parameter). Tried to use
> os.walk, but the structure of its return value is really unhandy for such a
> use (strange, because it seems to me this precise use is typical). On the
> other hand, os.path.walk seemed to meet my needs, but it is deprecated.
>
> I'd like to know if there are standard tools to do that. And your comments on
> the 2 approaches below.
I would use os.walk(), with fnmatch.fnmatch() to do the pattern
matching, and write the function as a generator (using yield). It
would look something like this (untested):
import os, fnmatch
def findFiles(topDir, pattern):
for dirpath, dirnames, filenames in os.walk(topDir):
for filename in filenames:
if fnmatch.fnmatch(filename, pattern):
yield os.path.join(dirpath, filename)
To get a list of matches you would call
list(findFiles(topDir, pattern))
but if you just want to iterate over the paths you don't need the list.
Kent
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor