On Friday 5 Jun 2015 09:17 CEST, Cecil Westerhof wrote: > I was already thinking along those lines. I made it: > def find(directory, to_match): > to_match = to_match.lower() > results = [] > for dirpath, dirnames, filenames in os.walk(expanduser(directory)): > for filename in filenames: > if(fnmatch(filename.lower(), to_match)): > results.append(os.path.join(dirpath, filename)) > return results
I have a slightly better variant: def find(directory, to_match, ignore_case = False): to_match = to_match + r'$' if ignore_case: p = re.compile(to_match, re.IGNORECASE) else: p = re.compile(to_match) results = [] for dirpath, dirnames, filenames in os.walk(expanduser(directory)): for filename in filenames: if p.match(filename): results.append(os.path.join(dirpath, filename)) return results Default it works now case sensitive. But I now use regular expression. That is a lot more efficient. The old version took 4.4 seconds and this version takes 2.4 seconds. But the ‘!find’ version takes about half a second. Why is this version so much less efficient? -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list