On Dec 14, 2:00 pm, "Vladimir Rusinov" <[EMAIL PROTECTED]> wrote: >Is there any easy way to list files using bash-like patterns? Something like >listfiles("/var/log/*.log"), listfiles("/var/{cache,run}/*"). > On 12/14/07, Jeff McNeil <[EMAIL PROTECTED]> wrote: > > > > > Sure is.. check out the glob module: > >http://www.python.org/doc/current/lib/module-glob.html(Official) > >http://blog.doughellmann.com/2007/07/pymotw-glob.html(PyMOTW) > > Thanks a lot! >
For example: import fnmatch DEFAULTPATTERNS = ['*'] DEFAULTIGNOREDIRS = ['.svn'] def find(root=None, patterns=None, ignoredirs=None): patterns = patterns or DEFAULTPATTERNS if ignoredirs is None: ignoredirs = DEFAULTIGNOREDIRS for fname in walkdir(root, ignoredirs=ignoredirs): for pattern in patterns: if fnmatch.fnmatch(fname, pattern): yield fname break def findfiles(root=None, patterns=None, ignoredirs=None): for f in find(root, patterns, ignoredirs=ignoredirs): if os.path.isfile(f): yield f (For walkdir, see os.walk function) (if root == None: use current working directory) hth Gerard -- http://mail.python.org/mailman/listinfo/python-list