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