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