[英]Python: Searching a directory and subdirectories for a certain file type
我有一个文件夹,其中包含一些不同类型的文件( .cpp
、 .hpp
、 .ipp
...),并且该文件夹中有多个子文件夹,它们也包含这些不同的文件类型。 我的问题是,我是否可以创建一个循环来搜索第一个主文件夹并返回一个包含任一文件夹中所有.cpp
文件的列表? 到目前为止,我知道:
folder_list = [f for f in os.listdir(os.getcwd()) if os.path.isdir(f)]
将返回子文件夹列表,然后我可以更改工作目录并将文件列表获取到 append。
我也知道:
file_list = [f for f in listdir(os.getcwd()) if isfile(join(os.getcwd(), f))]
将返回文件列表。
但是,我不会事先知道这些子文件夹(以及目录)的名称。 感谢您的任何帮助
只需使用pathlib.Path.rglob function
from pathlib import Path
list(Path(".").rglob("*.cpp" ))
您可以使用listdir
和endswith
来识别字符串末尾的字符:
filetypes = ['cpp', 'hpp', 'ipp']
dir = "target directory"
files = [[f for f in os.listdir(dir) if f.endswith(type_)] for type_ in filetypes]
这将生成列表列表,其中每个列表将保存特定类型的文件。
我认为您正在寻找的是os.walk()
:
filetypes = ['.cpp', '.hpp', '.ipp']
for current_folder, subfolders, files in os.walk(dir):
files = [f for f in files if f.endswith(filetype) for filetype in filetypes]
有关os.walk()
的更多信息: https://www.tutorialspoint.com/python/os_walk.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.