fastest way to test file for string?

Tim Chase python.list at tim.thechases.com
Fri Jun 5 15:14:36 CEST 2009


> Hi.  I need to implement, within a Python script, the same
> functionality as that of Unix's
> 
>    grep -rl some_string some_directory
> 
> I.e. find all the files under some_directory that contain the string
> "some_string".

I'd do something like this untested function:

   def find_files_containing(base_dir, string_to_find):
     for path, files, dirs in os.walk(base_dir):
       for fname in files:
         full_name = os.path.join(path, fname)
         f = file(full_name)
         for line in f:
           if string_to_find in line:
             f.close()
             yield full_name
             break
         else:
           f.close()

   for filename in find_files_containing(
       "/path/to/wherever/",
       "some_string"
       ):
     print filename

It's not very gracious regarding binary files, but caveat coder.

-tkc





More information about the Python-list mailing list