"rbt" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
> Could someone demonstrate the correct/proper way to use os.walk() to skip 
> certain files and folders while walking a specified path? I've read the 
> module docs and googled to no avail and posted here about other os.walk 
> issues, but I think I need to back up to the basics or find another tool 
> as this isn't going anywhere fast... I've tried this:
>
> for root, dirs, files in os.walk(path, topdown=True):
>
>     file_skip_list = ['file1', 'file2']
>     dir_skip_list = ['dir1', 'dir2']
>
>     for f in files:
>         if f in file_skip_list
>             files.remove(f)
>
>     for d in dirs:
>         if d in dir_skip_list:
>             dirs.remove(d)

I think the problem here is that you are removing elements from a list while 
traversing it.  Try to use a copy for the traversal, like this:
     for f in files[:]:
         if f in file_skip_list
             files.remove(f)

     for d in dirs[:]:
         if d in dir_skip_list:
             dirs.remove(d)

> And This:
>
>     files = [f for f in files if f not in file_skip_list]
>     dirs = [d for d in dirs if dir not in dir_skip_list]

This is not doing what you want because it just creates new lists and it 
doesn't modify the existing lists that the os.walk generator is using. 


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to