def search_files(rootdir, keyword): for filename in os.listdir(rootdir): filepath = os.path.join(rootdir, filename) if os.path.isdir(filepath): search_files(filepath, keyword) else: try: with codecs.open(filepath, 'r', encoding='utf-8') as f: content = f.readlines() count = 0 for line in content: # 遍历文件的每一行 if keyword in line: count += 1 if count > 0: # 如果该文件包含关键词 print("包含 '{0}' 文字的文件路径: '{1}',行数为:{2}".format(keyword, filepath, count)) except UnicodeDecodeError: #print("Error decoding file '{0}'".format(filepath)) print("",end='') 这段代码中匹配大小写,并且增加一个可以指定不需要的目录数组
时间: 2024-01-22 08:04:16 浏览: 182
好的,这是一个搜索指定目录下包含指定关键字的文件,并输出包含关键字行数的代码。如果需要匹配大小写,可以将第13行的 `if keyword in line:` 改为 `if keyword in line.lower():`。如果需要指定不需要的目录数组,可以在函数开头添加一个参数 `exclude_dirs`,并在第5行添加判断:
```
def search_files(rootdir, keyword, exclude_dirs=[]):
for filename in os.listdir(rootdir):
filepath = os.path.join(rootdir, filename)
if os.path.isdir(filepath):
if filename in exclude_dirs:
continue
search_files(filepath, keyword, exclude_dirs)
else:
try:
with codecs.open(filepath, 'r', encoding='utf-8') as f:
content = f.readlines()
count = 0
for line in content:
if keyword in line:
count += 1
if count > 0:
print("包含 '{0}' 文字的文件路径: '{1}',行数为:{2}".format(keyword, filepath, count))
except UnicodeDecodeError:
print("",end='')
```
调用函数时,可以指定不需要的目录数组:
```
exclude_dirs = ['dir1', 'dir2']
search_files('/path/to/rootdir', 'keyword', exclude_dirs)
```
阅读全文