--- os.py 2011-09-13 18:16:10.000000000 +0600 +++ os.py 2011-09-13 18:52:03.541260113 +0600 @@ -267,7 +267,8 @@ dirs, nondirs = [], [] for name in names: - if isdir(join(top, name)): + path = join(top, name) + if isdir(path) and (followlinks or not islink(path)): dirs.append(name) else: nondirs.append(name) @@ -275,10 +276,8 @@ if topdown: yield top, dirs, nondirs for name in dirs: - path = join(top, name) - if followlinks or not islink(path): - for x in walk(path, topdown, onerror, followlinks): - yield x + for x in walk(join(top, name), topdown, onerror, followlinks): + yield x if not topdown: yield top, dirs, nondirs