Find in ipython3
Cecil Westerhof
Cecil at decebal.nl
Sat Jun 6 05:57:54 EDT 2015
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
More information about the Python-list
mailing list