我想在某个目录中查找特定类型的文件。该目录有很多很多子文件夹,我想忽略某些子文件夹。我使用以下代码 -
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'
答案 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”的所有子目录。