使用os.walk在目录树下查找具有特定文件扩展名的文件夹

时间:2018-10-01 20:50:03

标签: python filepath glob os.walk directory-tree

我需要遍历所有文件夹,以找到具有特定扩展名的文件的文件夹的文件路径(例如,我们将说.txt)。 我不知道文件夹是在树的顶部还是在树的底部。

例如,我们开始于:

OneDrive/Documents/project/SourceCode

包含所有.txt文件的文件夹可以位于OneDrive/Documents/project/SourceCode/TxtFiles中,也可以位于OneDrive/Documents/project/TxtFiles中,或者也可以超过项目文件。

我如何找到文件路径?我尝试使用os.walk,但对它的工作方式没有足够的了解。最后,我将所有.txt文件放到一个巨大的列表中。

2 个答案:

答案 0 :(得分:1)

我建议使用pathlib

from pathlib import Path

base_path = Path('base/path/to/search/from')
text_file = next(base_path.glob('**/*.txt'))
parent_dir = text_file.parent.resolve()

答案 1 :(得分:0)

from pathlib import Path
from pprint import pprint
import os

def find_files_of_ext(root, ext):
    return [str(Path(dir, file_)) for dir, subdir, files in os.walk(root) for file_ in files if Path(file_).suffix == ext]


filepaths = find_files_of_ext('C:/Users/username/OneDrive', '.jpeg' )
pprint(filepaths)