递归搜索目录中具有特定扩展名的文件

2024-09-30 20:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

出于某种原因,这会返回一个空列表,我不知道为什么。在

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"))

Tags: inimport列表forosextensionrootfolder
1条回答
网友
1楼 · 发布于 2024-09-30 20:31:12

您需要为fnmatch.filter()的每个扩展添加通配符以匹配:

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

但这里根本不需要使用fnmatch。只需使用str.endswith()

^{pr2}$

或者用列表理解来表达:

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

相关问题 更多 >