在os.walk()中如何忽略目录?

5

我希望在os.walk()中忽略一些目录。

我这样做:

folders_to_ignore = ['C:\\Users\\me\\AppData\\'];
def find_files(directory, pattern):
for root, dirs, files in os.walk(directory):
    dir[:] = [d for d in dirs if not is_folder_to_ignore(d)];
    for basename in files:
        if fnmatch.fnmatch(basename, pattern):
            filename = os.path.join(root, basename)
            print("filename=" + filename);

I get:

  File "C:\Users\me\workspaces\pythonWS\FileUtils\findfiles.py", line 29, in find_files
  dir[:] = [d for d in dirs if not is_folder_to_ignore(d)];

类型错误:'builtin_function_or_method' 对象不支持项目分配

有什么想法吗?

谢谢。


@mgilson 我认为dirs是这样更新的,请参考:https://dev59.com/XW435IYBdhLWcg3w6EmF - dublintech
@mgilson请查看有关os.walk的文档,了解就地修改目录列表的含义。 - dash-tom-bang
1
@dublintech -- 你说得对。我匆匆浏览了文档,没有看到直接修改dirs确实会产生不同的效果。这很酷。谢谢你今天教给我新东西! - mgilson
1个回答

15
您正在使用内置函数dir,也许您的意思是dirs
更改此内容。
dir[:] = [d for d in dirs if not is_folder_to_ignore(d)]

到这里

dirs[:] = [d for d in dirs if not is_folder_to_ignore(d)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接