有没有一种方法来确定一个子目录是否在使用os.walk的python在同一个文件系统?

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

os.path.ismount()

我想你可以使用os.stat调用和os.walk给定的dirname过滤的组合来做你想做的事情。 像这样的东西:

 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上工作。