Files
semios-packages/lib/common.py
2026-06-10 07:17:27 +08:00

22 lines
627 B
Python

import os
import types
def _wrap_treedir_entry(ent, prefix=""):
wrapped = types.SimpleNamespace()
wrapped.name = f"{prefix}/{ent.name}" if prefix else ent.name
wrapped.path = ent.path
wrapped.is_dir = ent.is_dir
wrapped.is_file = ent.is_file
wrapped.is_symlink = ent.is_symlink
return wrapped
def treedir(root: str, prefix: str = ""):
with os.scandir(root) as entries:
for ent in entries:
wrapped = _wrap_treedir_entry(ent, prefix)
yield wrapped
if wrapped.is_dir(follow_symlinks=False):
yield from treedir(ent.path, wrapped.name)