使用 os.walk 在目录树下查找具有特定文件扩展名的文件夹
Use os.walk to find a folder with specific file extensions under directory tree
我需要遍历我的所有文件夹以找到包含具有特定扩展名的文件的文件夹的文件路径(例如,我们会说 .txt
)。
我不知道该文件夹是在树的顶部还是底部。
例如,我们开始于:
OneDrive/Documents/project/SourceCode
包含所有 .txt 文件的文件夹可以在 OneDrive/Documents/project/SourceCode/TxtFiles
中,也可以在 OneDrive/Documents/project/TxtFiles
中,也可以在项目文件之后。
我如何找到文件路径?我尝试使用 os.walk
,但我对它的工作原理没有足够的了解。最后,我将所有 .txt
文件放入一个巨大的列表中。
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)
我建议使用 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()
我需要遍历我的所有文件夹以找到包含具有特定扩展名的文件的文件夹的文件路径(例如,我们会说 .txt
)。
我不知道该文件夹是在树的顶部还是底部。
例如,我们开始于:
OneDrive/Documents/project/SourceCode
包含所有 .txt 文件的文件夹可以在 OneDrive/Documents/project/SourceCode/TxtFiles
中,也可以在 OneDrive/Documents/project/TxtFiles
中,也可以在项目文件之后。
我如何找到文件路径?我尝试使用 os.walk
,但我对它的工作原理没有足够的了解。最后,我将所有 .txt
文件放入一个巨大的列表中。
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)
我建议使用 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()