递归子文件夹搜索和文件检索
在编程领域,遍历目录和检索文件可能是一项常见任务。一种有效的方法是采用递归算法搜索子文件夹并累积满足特定条件的文件列表。
遇到的问题
用户遇到了障碍尝试在递归子文件夹搜索中构建特定文件的列表时。该问题源于子文件夹变量拉入子文件夹列表,而不是包含该文件的当前文件夹。
子文件夹的用途
子文件夹变量旨在保存所需文件所在主文件夹下的子文件夹名称。
解决方法
解决这个问题的关键在于利用“root”或“dirpath”变量而不是“subFolder”。该变量保存递归期间遍历的当前目录的绝对路径。通过将此路径合并到 fileNamePath 的构造中,可以实现所需的准确性。
<code class="python">import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']</code>
Glob 模块增强
另一种有效的方法涉及利用 Python内置 glob 模块。 Glob 擅长根据扩展名选择文件。
<code class="python">import os from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>
生成器函数
为了简洁高效的实现,还可以使用生成器函数。
<code class="python">from itertools import chain result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>
Python 3.4 解决方案
如果您使用的是 Python 3.4 或更高版本,则可以利用 pathlib 模块的 rglob() 函数。
<code class="python">from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>
这些方法提供了有效的解决方案,用于递归搜索子文件夹并编译满足所需条件的文件列表,使您的文件检索任务变得轻而易举。
以上是如何在Python中递归搜索子文件夹并检索文件?的详细内容。更多信息请关注PHP中文网其他相关文章!