Python 3.12 的 pathlib.Path 增加了 walk(),遍历目录时可以直接从 Path 对象开始,返回的目录和文件名也更容易继续拼路径。
环境:Python 3.12+。建个最小目录试试:
mkdir -p path-walk-demo/src path-walk-demo/cache
printf 'print(1)\n' > path-walk-demo/src/app.py
printf 'tmp\n' > path-walk-demo/cache/data.tmp
printf 'readme\n' > path-walk-demo/README.md
cat > path-walk-demo/list_py.py <<'PY'
from pathlib import Path
root = Path(__file__).parent
for current, dirs, files in root.walk():
dirs[:] = [name for name in dirs if name != "cache"]
for name in files:
path = current / name
if path.suffix == ".py":
print(path.relative_to(root))
PY
cd path-walk-demo
python list_py.py
输出会包含 list_py.py 和 src/app.py,但不会进入 cache。dirs 是当前层待继续遍历的目录名列表,提前改它就能剪枝。
如果项目还要兼容 Python 3.11,就继续用 os.walk() 或自己封装一层,别只因为写法更顺手就直接抬高版本要求。