You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历多个指定目录的文件?pathlib传多路径仅遍历第二个路径

问题原因

pathlib.Path构造方法传入多个位置参数时,作用是拼接路径片段,并非指定多个待遍历的根目录:

  • 如果传入的后续路径是相对路径,会和前面的路径拼接成一个新的单一路径
  • 如果传入的后续路径是绝对路径,会直接丢弃前面所有的路径片段,以最后一个绝对路径为准
    你遇到的只遍历第二个路径的情况,就是因为传入参数时第二个路径被识别为绝对路径、覆盖了前一个路径,本质是用法错误,自然无法同时扫描两个目录。
正确实现方案

以下两种写法都可以精准遍历指定的两个文件夹,完全忽略其他无关目录与文件:

方案1:合并迭代器(推荐)

借助itertools.chain将两个目录的glob遍历结果合并为一个迭代器,单次循环即可处理所有匹配文件,代码简洁:

from pathlib import Path
from itertools import chain

root_dir_A = Path("dirA/subdirA/folder1")
root_dir_B = Path("dirA/subdirA/folder2")

for file in chain(root_dir_A.glob("**/*.json"), root_dir_B.glob("**/*.json")):
    with open(file, encoding="utf8") as json_data:
        # 写入你的json处理逻辑
        ...

提示:使用with上下文管理器打开文件会自动完成资源释放,避免文件句柄泄漏,比直接调用open()更稳妥。

方案2:遍历根路径列表

如果不想引入额外依赖,直接遍历存储目标根路径的列表即可,逻辑直白易读:

from pathlib import Path

target_dirs = [
    Path("dirA/subdirA/folder1"),
    Path("dirA/subdirA/folder2")
]

for dir_path in target_dirs:
    for file in dir_path.glob("**/*.json"):
        with open(file, encoding="utf8") as json_data:
            # 写入你的json处理逻辑
            ...

两种方案的遍历范围都被严格限定在你指定的两个文件夹内部,不会扫描上级目录中的其他无关内容,完全匹配需求。

内容的提问来源于stack exchange,提问作者Mitch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:39:09