From 6fbedbf2e57b67e45eeff902db4bba2a48d9b695 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 5 Sep 2008 01:50:01 +0200 Subject: add (and use) method tools.oswalksymlinks bzr revid: christophe@tinyerp.com-20080904235001-3ix8x19mcdobihwo --- bin/tools/misc.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'bin/tools/misc.py') 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 #---------------------------------------------------------- -- cgit v1.2.3