Help me understand this iterator

LaundroMat Laundro at
Tue Oct 31 12:36:08 CET 2006


I've found this script over at effbot
(, and I can't get my head
around its inner workings. Here's the script:

import os

class DirectoryWalker:
    # a forward iterator that traverses a directory tree

    def __init__(self, directory):
        self.stack = [directory]
        self.files = []
        self.index = 0

    def __getitem__(self, index):
        while 1:
                file = self.files[self.index]
                self.index = self.index + 1
            except IndexError:
                # pop next directory from stack
       = self.stack.pop()
                self.files = os.listdir(
                self.index = 0
                # got a filename
                fullname = os.path.join(, file)
                if os.path.isdir(fullname) and not
                return fullname

for file in DirectoryWalker("."):
    print file

Now, if I look at this script step by step, I don't understand:
- what is being iterated over (what is being called by "file in
- where it gets the "index" value from;
- where the "while 1:"-loop is quitted.

Thanks in advance,


More information about the Python-list mailing list