> -----Original Message----- > From: Tutor [mailto:tutor-bounces+crk=godblessthe...@python.org] On > Behalf Of Cameron Simpson > Sent: Sunday, August 02, 2015 3:35 PM > To: tutor@python.org > Subject: Re: [Tutor] scratching my head > > On 02Aug2015 23:01, ALAN GAULD <alan.ga...@btinternet.com> wrote: > >On 02/08/15 22:44, Clayton Kirkwood wrote: > >>for dir_path, directories, files in os.walk(main_dir): > >> for file in files: > >># print( " file = ", file) > >># if( ("(\.jpg|\.png|\.avi|\.mp4)$") not in file.lower() ): > > > >Python sees that as a single string. That string is not in your filename. > > > >># if( (".jpg" or ".png" or ".avi" or ".mp4" ) not in file.lower() > [...] > >But you could use a loop: > > > >found = False > >for s in (".jpg",".png",".avi",".mp4"): > > found = test or (s in file.lower()) if not found: ... > > > >> if( ".jpg" not in file.lower() and > >> ".png" not in file.lower() and > >> ".avi" not in file.lower() and > >> ".mp4" not in file.lower() ): > > > >Whether that's any better than your combined test is a moot point. > > Alan has commented extensively on the logic/implementation errors. I have > a suggestion. > > Personally I'd be reaching for os.path.splitext. Untested example below: > > from os.path import splitext > .... > for dir_path, directories, files in os.walk(main_dir): > for file in files: > prefix, ext = splitext(file) > if ext and ext[1:].lower() in ('jpg', 'png', 'avi', 'mp4'): > .... > > which I think is much easier to read. > > BTW, I'd be using the variable names "filename" and "filenames" instead of > "file" and "files": in python 2 "file" is a builtin function (though long > deprecated by "open()") and in any case I'd (personally) expect such a name > to be an _open_ file. As opposed to "filename", which is clearer.
Thanks, that should also help a lot. Now time to look at splitext, and the ext and ext[1:. I appreciate your comments also about the variable names. Any comments on the problems lower in the file? Clayton > > Cheers, > Cameron Simpson <c...@zip.com.au> > > Rudin's Law: > If there is a wrong way to do something, most people will do it every time. > Rudin's Second Law: > In a crisis that forces a choice to be made among alternative courses of > action, people tend to choose the worst possible course. > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor