On Wed, Jan 22, 2014 at 6:08 PM, Roy Smith <r...@panix.com> wrote: > In article <mailman.5853.1390438708.18130.python-l...@python.org>, > Larry Martell <larry.mart...@gmail.com> wrote: > >> I have the need to check for a files existence against a string, but I >> need to do case-insensitively. I cannot efficiently get the name of >> every file in the dir and compare each with my string using lower(), >> as I have 100's of strings to check for, each in a different dir, and >> each dir can have 100's of files in it. > > I'm not quite sure what you're asking. Do you need to match the > filename, or find the string in the contents of the file? I'm going to > assume you're asking the former.
Yes, match the file names. e.g. if my match string is "ABC" and there's a file named "Abc" then it would be match. > One way or another, you need to iterate over all the directories and get > all the filenames in each. The time to do that is going to totally > swamp any processing you do in terms of converting to lower case and > comparing to some set of strings. > > I would put all my strings into a set, then use os.walk() traverse the > directories and for each path os.walk() returns, do "path.lower() in > strings". The issue is that I run a database query and get back rows, each with a file path (each in a different dir). And I have to check to see if that file exists. Each is a separate search with no correlation to the others. I have the full path, so I guess I'll have to do dir name on it, then a listdir then compare each item with .lower with my string .lower. It's just that the dirs have 100's and 100's of files so I'm really worried about efficiency. -- https://mail.python.org/mailman/listinfo/python-list