[英]Recursively searching for files with specific extensions in a directory
出于某种原因,这会给我一个空列表,我不知道为什么。
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"))
您需要为fnmatch.filter()
每个扩展添加通配符以匹配:
fnmatch.filter(filenames, '*' + extension)
但是根本不需要在这里使用fnmatch
。 只需使用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))
或表达为列表理解:
return [os.path.join(r, fn)
for r, ds, fs in os.walk(folder)
for fn in fs if fn.endswith(extensions)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.