Python glob 多种文件类型

254 投票
42 回答
313425 浏览
提问于 2025-04-16 09:14

有没有更好的方法在Python中使用glob.glob来获取多个文件类型的列表,比如.txt、.mdown和.markdown?现在我有这样的代码:

projectFiles1 = glob.glob( os.path.join(projectDir, '*.txt') )
projectFiles2 = glob.glob( os.path.join(projectDir, '*.mdown') )
projectFiles3 = glob.glob( os.path.join(projectDir, '*.markdown') )

42 个回答

89

有很多回答建议根据扩展名的数量进行多次匹配,我更倾向于只进行一次匹配:

from pathlib import Path

files = (p.resolve() for p in Path(path).glob("**/*") if p.suffix in {".c", ".cc", ".cpp", ".hxx", ".h"})
128

glob 是一个函数,它会返回一个文件列表。那为什么不多次运行它,然后把结果拼接在一起呢?

from glob import glob
project_files = glob('*.txt') + glob('*.mdown') + glob('*.markdown')
237

也许还有更好的方法,但你可以试试这个:

import glob
types = ('*.pdf', '*.cpp') # the tuple of file types
files_grabbed = []
for files in types:
    files_grabbed.extend(glob.glob(files))

# files_grabbed is the list of pdf and cpp files

可能还有其他的解决办法,所以可以等一下,看看有没有人能给出更好的答案。

撰写回答