查找文件(但在某些文件夹中忽略它们)

时间:2011-02-16 17:17:24

标签: python

我想在某个目录中查找特定类型的文件。该目录有很多很多子文件夹,我想忽略某些子文件夹。我使用以下代码 -

def locate(pattern, root=os.curdir):
    '''Locate all files matching supplied filename pattern in and below
    supplied root directory.'''
    for path, dirs, files in os.walk(os.path.abspath(root)):
        for filename in fnmatch.filter(files, pattern):
            yield os.path.join(path, filename)


for filename in locate("*.s2p"):
          #do something

我认为应该有一些方法可以将os.curdir更改为os.curdir(减去一些文件夹),或者我可以检查当前路径并放入条件循环?我试过os.cwd(),但是我收到一条错误消息,说“模块”对象没有属性'cwd'

1 个答案:

答案 0 :(得分:2)

如果您想在使用os.walk行走时忽略某些子目录,则可以改变“dirs”的值。 E.g。

ignored = ["foo", "bar"]
for path, dirs, files in os.walk(os.path.abspath(root)):
    for dir in ignored:
        if dir in dirs: dirs.remove(dir)
    for filename in fnmatch.filter(files, pattern):
        yield os.path.join(path, filename)

这会在遍历目录树时跳过名为“foo”或“bar”的所有子目录。