@@ -0,0 +1,21 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user