def iteritems(self, path=None, want_files=True, want_dirs=True, func=None, filt=None):
if path is None: iter_path = self.path<EOL>else:            iter_path = path<EOL>for f in os.listdir(iter_path):<EOL><INDENT>if f[<NUM_LIT:0>] == '<STR_LIT:.>': continue<EOL>if self.absolute: af = os.path.abspath( os.path.join(iter_path, f) )<EOL>else:             af = os.path.join(iter_path, f)<EOL>if filt and not filt(af): continue<EOL>if not os.path.exists(af): raise IOError('<STR_LIT>' % af)<EOL>if ( os.path.isfile(af) and want_files ) or ( os.path.isdir(af) and want_dirs ):<EOL><INDENT>if self.stripdot and af[:<NUM_LIT:2>] == '<STR_LIT>': af = af[<NUM_LIT:2>:]<EOL>if func: yield ( func(af), af )<EOL>else:    yield af<EOL><DEDENT>if os.path.isdir(af):<EOL><INDENT>for x in self.iteritems(path       = af,<EOL>want_files = want_files,<EOL>want_dirs  = want_dirs,<EOL>func       = func,<EOL>filt       = filt): yield x<EOL><DEDENT><DEDENT>
streaming item iterator that can optionally run a function / filter function on each item (files/dirs)

            Parameters:
                - path          path to iterate on (note: this is called recursively)
                - want_files    True if you want file results in the iteration, False if you don't
                - want_dirs     True if you want directory results in the iteration, False if you don't
                - func          function to run on each (this will cause the return output to expand to a list of tuples)
                - filt          filter function - only iterates on files when filt(absolute_filename) == True