簡體   English   中英

遞歸搜索目錄中具有特定擴展名的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM