Python os.walk + follow symlinks

39

如何让这段代码在 Python 2.6 中跟随符号链接?

def load_recursive(self, path):
    for subdir, dirs, files in os.walk(path):
        for file in files:
            if file.endswith('.xml'):
                file_path = os.path.join(subdir, file)
                try:
                    do_stuff(file_path) 
                except:
                    continue
1个回答

65

followlinks 设置为 True,这是 os.walk 方法的第四个参数,下面是该参数的复制:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

这个选项是在Python 2.6中添加的。

编辑1

使用followlinks=True时要小心。根据文档

注意: 当设置followlinks为True时,如果链接指向其父目录,则可能会导致无限递归。walk()不会跟踪它已经访问过的目录。


8
谢谢,os.walk(path, followlinks=True) 解决了问题,虽然 Python 文档写得不太清楚:http://docs.python.org/library/os.path.html#os.path.walk。 - fmalina
8
@Frank:当然不清楚,你正在查看独立的(旧且已弃用的)函数os.path.walk的文档。你应该查看os.walk的文档。 - tzot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接