使用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
相关产品推荐
相关产品推荐

