可能重复:
In Python, fastest way to build a list of files in a directory with a certain extension
我目前正在使用os.walk以递归方式扫描标识.MOV文件的目录
def fileList():
matches = []
for root, dirnames, filenames in os.walk(source):
for filename in fnmatch.filter(filenames, '*.mov'):
matches.append(os.path.join(root, filename))
return matches
如何扩展它以识别多个文件,例如.mov,.MOV,.avi,.mpg?
感谢。
答案 0 :(得分:8)
尝试这样的事情:
def fileList(source):
matches = []
for root, dirnames, filenames in os.walk(source):
for filename in filenames:
if filename.endswith(('.mov', '.MOV', '.avi', '.mpg')):
matches.append(os.path.join(root, filename))
return matches
答案 1 :(得分:2)
使用os.path.splitext
的替代方案:
for root, dirnames, filenames in os.walk(source):
filenames = [ f for f in filenames if os.path.splitext(f)[1] in ('.mov', '.MOV', '.avi', '.mpg') ]
for filename in filenames:
matches.append(os.path.join(root, filename))
return matches
答案 2 :(得分:2)
pattern = re.compile('.*\.(mov|MOV|avi|mpg)$')
def fileList(source):
matches = []
for root, dirnames, filenames in os.walk(source):
for filename in filter(lambda name:pattern.match(name),filenames):
matches.append(os.path.join(root, filename))
return matches