如何使用Pathlib模块替代os.walk()实现目录遍历?
用Pathlib替代os.walk()的方法
os.walk()的作用是递归遍历目录,返回当前目录路径、子目录列表、文件列表。用Pathlib实现类似效果有两种常见方式:
1. 快速遍历所有文件/目录(用rglob())
如果你的需求只是遍历所有文件(包含子目录里的),rglob()是最简洁的选择,它能匹配指定模式的所有路径:
from pathlib import Path target_dir = Path("目标目录路径") # 遍历所有条目(文件+目录),也可以指定模式比如"*.txt"只找文本文件 for item in target_dir.rglob("*"): if item.is_file(): # 处理文件,比如传入路径给doSomething doSomething(item) # 如需处理目录,可加elif item.is_dir():
2. 完全模拟os.walk()的返回格式
如果需要和os.walk()一样返回「当前目录、子目录列表、文件列表」的结构,可以自己写个递归函数:
from pathlib import Path def path_walk(path: Path): subdirs = [] files = [] # 遍历当前目录下的所有条目 for item in path.iterdir(): if item.is_dir(): subdirs.append(item.name) # 递归处理子目录,把结果yield出来 yield from path_walk(item) else: files.append(item.name) # 返回当前目录的信息 yield (str(path), subdirs, files) # 使用方式和os.walk一致 target_dir = Path("目标目录路径") for dir_path, subdirs, filenames in path_walk(target_dir): doSomething()
内容的提问来源于stack exchange,提问作者prachi sutane
相关产品推荐
相关产品推荐

