Tim Chase wrote:
Hi.  I need to implement, within a Python script, [functionality like]:
   grep -rl some_string some_directory

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):
Note order wrong here
      ...

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

I like results in a nice order, so I do something more like:

    def find_files_containing(base_dir, string_to_find):
        for path, dirs, files in os.walk(base_dir): # note order
            for fname in sorted(files):  # often endswith in here
                full_name = os.path.join(path, fname)
                try:
                    with open(full_name) as f:
                        for line in f:
                            if string_to_find in line:
                                yield full_name
                                break
                except IOError, why:
                    print ("On %s in %s: %s' % (fname, path, why))
            # usually several subdirs to avoid
            dirs[:] = sorted([d for d in dirs
                       if d[0] != '.' and d not in ('RCS', 'CVS')])

--Scott David Daniels
scott.dani...@acm.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to