2012-11-05 198 views
4

我希望忽略os.walk()中的一些目錄。忽略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)]; 

類型錯誤: 'builtin_function_or_method' 對象不支持項目分配

任何想法?

謝謝。

+0

@mgilson我以爲迪爾斯更新這樣看:http://stackoverflow.com/questions/5141437/filtering-os-walk-dirs-and-files – dublintech

+0

@mgilson請參閱'os.walk'上的文檔,瞭解它對就地修改的意義目錄列表。 –

+1

@dublintech - 你是對的。我很快瀏覽了文檔(也很快),並沒有看到修改「dirs」的作用實際上有所不同。這很酷。謝謝你今天給我一些新的東西! – mgilson

回答

14

您使用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)]