listdir() with mask
grflanagan
grflanagan at yahoo.co.uk
Fri Dec 14 08:59:02 EST 2007
On Dec 14, 2:00 pm, "Vladimir Rusinov" <vladi... at greenmice.info>
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 <j... at jmcneil.net> 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
More information about the Python-list
mailing list