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.
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