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