Velvet Star Monitor

Standout celebrity highlights with iconic style.

news

Recursively searching for files with specific extensions in a directory

Writer Matthew Barrera

For some reason this returns me an empty list, and I have no idea why.

import os, fnmatch
vidext = ['.avi', '.mkv', '.wmv', '.mp4', '.mpg', '.mpeg', '.mov', '.m4v']
def findExt(folder): matches = [] for root, dirnames, filenames in os.walk(folder): for extension in vidext: for filename in fnmatch.filter(filenames, extension): matches.append(os.path.join(root, filename)) return matches
print(findExt("D:\TVRip"))

1 Answer

You'd need to add a wildcard to each extension for fnmatch.filter() to match:

fnmatch.filter(filenames, '*' + extension)

but there is no need to use fnmatch here at all. Just use str.endswith():

for root, dirnames, filenames in os.walk(folder): for filename in filenames: if filename.endswith(extensions): matches.append(os.path.join(root, filename))

or expressed as a list comprehension:

return [os.path.join(r, fn) for r, ds, fs in os.walk(folder) for fn in fs if fn.endswith(extensions)]
4

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy