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()

Python sees that as a boolean expression so will try to
work it out as a True/False value. Since a non empty
string is considered True and the first True expression
makes an OR opeation True overall it returns ".jpg" and
tests if it is not in the filename.

#except by the drudgery below. I should be able to just have a list, maybe
from a file, that lists all

You might think so but that's not how 'in' works.

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.

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to