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

使用pathlib.Path调用walk方法时,为何出现‘PosixPath'无walk属性异常?

问题原因与解决办法

错误原因

这个报错的核心原因是你的Python版本低于3.12。Path.walk()是Python 3.12版本才新增到pathlib模块的方法,低版本Python的PosixPath/WindowsPath对象并不包含这个属性,因此调用时会抛出属性不存在的异常。

解决办法

方案1:升级Python版本

如果环境允许,将Python升级到3.12或更高版本,你的原始代码可以直接运行,不需要修改。

方案2:低版本替代实现

如果无法升级Python,可通过以下两种方式实现目录遍历:

  • 使用os.walk()结合pathlib:
    from pathlib import Path
    import os
    
    p = Path()
    for dirpath, dirnames, filenames in os.walk(p):
        # 可选:将字符串路径转为Path对象,方便后续路径操作
        dirpath = Path(dirpath)
        print(dirpath, dirnames, filenames)
    
  • 基于Path.iterdir()实现递归遍历:
    from pathlib import Path
    
    def walk_path(path: Path):
        dirnames = []
        filenames = []
        # 先收集当前目录下的子目录和文件
        for item in path.iterdir():
            if item.is_dir():
                dirnames.append(item.name)
            else:
                filenames.append(item.name)
        # 返回当前目录的信息
        yield path, dirnames, filenames
        # 递归处理子目录
        for item in path.iterdir():
            if item.is_dir():
                yield from walk_path(item)
    
    p = Path()
    for dirpath, dirnames, filenames in walk_path(p):
        print(dirpath, dirnames, filenames)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:44:55