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

Reply via email to