有没有办法在使用os.walk时确定子目录是否在python的同一文件系统中?

时间:2009-02-10 00:18:51

标签: python unix

我正在编写一个使用os.walk()来遍历目录树的python脚本。我想让它能够以find -xdev的方式跳过挂载到不同文件系统的子目录。检查os.walk()上的文档,我没有看到任何参数传递给它自动执行。我可以用自己的东西来过滤吗?希望能在Linux和Mac OS X上运行的东西?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

我认为你可以结合使用os.stat调用和os.walk给出的dirnames过滤来做你想做的事情。像这样:

import os
for root, dirs, files in os.walk(somerootdir) :
    do_processing(root, dirs, files)
    dirs = [i for i in dirs if os.stat(os.path.join(root, i)).st_dev == os.stat(root).st_dev]

这应该通过删除那些没有相同设备的目录来修改要递归的目录列表。

我不知道它如何在OS X上运行,但经过一些测试后,它似乎在Linux中运行。