Используйте os.walk, чтобы найти папку с конкретными расширениями файлов в дереве каталогов - PullRequest
0 голосов
/ 01 октября 2018

Мне нужно пройти по всем моим папкам, чтобы найти путь к папке с файлами с определенным расширением (для примера скажем .txt).Я не знаю, будет ли папка вверху дерева или внизу.

Например, мы начинаем с:

OneDrive/Documents/project/SourceCode

Папка, содержащая все файлы .txt, может находиться в OneDrive/Documents/project/SourceCode/TxtFiles, или в OneDrive/Documents/project/TxtFiles, или может такжеболее подробно о файле проекта.

Как мне найти путь к файлу?Я пытался использовать os.walk, но у меня недостаточно четкого понимания того, как это работает.В конце я помещаю все файлы .txt в гигантский список.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Я бы рекомендовал использовать 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()
0 голосов
/ 02 октября 2018
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)
...