diff options
Diffstat (limited to 'bin/tools/misc.py')
| -rw-r--r-- | bin/tools/misc.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 32d58ff5ae1..cbca190fd04 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -256,6 +256,22 @@ def file_open(name, mode="r", subdir='addons', pathinfo=False): raise IOError, 'File not found : '+str(name) +def oswalksymlinks(top, topdown=True, onerror=None): + """ + same as os.walk but follow symlinks + """ + for dirpath, dirnames, filenames in os.walk(top, topdown, onerror): + symlinks = filter(lambda dirname: os.path.islink(os.path.join(dirpath, dirname)), dirnames) + if not topdown: + for s in symlinks: + for x in oswalksymlinks(os.path.join(dirpath, s), topdown, onerror): + yield x + yield dirpath, dirnames, filenames + if topdown: + for s in symlinks: + for x in oswalksymlinks(os.path.join(dirpath, s), topdown, onerror): + yield x + #---------------------------------------------------------- # iterables #---------------------------------------------------------- |
