newb question: file searching

jaysherby at gmail.com jaysherby at gmail.com
Tue Aug 8 22:16:38 EDT 2006


I'm sorry.  I didn't mean to offend you.  I never thought your way was
inferior.


Justin  Azoff wrote:
> jaysherby at gmail.com wrote:
> > I do appreciate the advice, but I've got a 12 line function that does
> > all of that.  And it works!  I just wish I understood a particular line
> > of it.
>
> You miss the point.  The functions I posted, up until get_files_by_ext
> which is the equivalent of your getFileList, total 17 actual lines.
> The 5 extra lines give 3 extra features.  Maybe in a while when you
> need to do a similar file search you will realize why my way is better.
>
> [snip]
> > The line I don't understand is:
> > reversed(range(len(dirnames)))
>
> This is why I wrote and documented a separate remove_hidden function,
> it can be tricky.  If you broke it up into multiple lines, and added
> print statements it would be clear what it does.
>
> l  = len(dirnames) # l is the number of elements in dirnames, e.g. 6
> r  = range(l) # r contains the numbers 0,1,2,3,4,5
> rv = reversed(r) # rv contains the numbers 5,4,3,2,1,0
>
> The problem arises from how to remove elements in a list as you are
> going through it. If you delete element 0, element 1 then becomes
> element 0, and funny things happen.  That particular solution is
> relatively simple, it just deletes elements from the end instead.  That
> complicated expression arises because python doesn't have "normal" for
> loops.  The version of remove_hidden I wrote is simpler, but relies on
> the even more obscure lst[:] construct for re-assigning a list.  Both
> of them accomplish the same thing though, so if you wanted, you should
> be able to replace those 3 lines with just
>
>     dirnames[:] = [d for d in dirnames if not d.startswith('.')]
> 
> 
> -- 
> - Justin




More information about the Python-list mailing list