【问题标题】:ignoring directories in os.walk()?忽略 os.walk() 中的目录?
【发布时间】:2012-10-25 16:41:58
【问题描述】:

我希望忽略我的 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);

我明白了:

  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)];

TypeError: 'builtin_function_or_method' 对象不支持项目分配

有什么想法吗?

谢谢。

【问题讨论】:

  • @mgilson 我认为目录是这样更新的,请参阅:stackoverflow.com/questions/5141437/…
  • @mgilson 请参阅os.walk 上的文档了解就地修改目录列表的含义。
  • @dublintech -- 你是对的。我(也)快速浏览了文档,并没有看到就地修改dirs 实际上会有所不同。这很酷。谢谢你今天教我一些新东西!

标签: python


【解决方案1】:

您使用的是内置的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)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2013-05-16
    • 2015-07-20
    • 1970-01-01
    相关资源
    最近更新 更多