使用Python os.walk识别文件

问题描述:

列表

可能重复:
In Python, fastest way to build a list of files in a directory with a certain extension使用Python os.walk识别文件

我目前使用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 ?

谢谢。

尝试这样:

def fileList(): 
    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 

另一种使用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 

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