用python把一个文件夹下子文件夹里所有文件中包含字符串'CA1'的行以及这行下面的1096行提取出来,怎样效率最快?for循环最好不用,请写出具体代码
时间: 2023-05-20 11:05:32 浏览: 75
可以使用Python的os和re模块来实现这个功能,具体代码如下:
import os
import re
def search_CA1(folder_path):
pattern = re.compile('.*CA1.*')
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
with open(file_path, 'r') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if pattern.match(line):
print(file_path + ': ' + line.strip())
print(lines[i:i+1097])
search_CA1('/path/to/folder')
这个函数会遍历指定文件夹下的所有子文件夹,对于每个文件,它会逐行读取文件内容,并使用正则表达式匹配包含'CA1'的行。如果匹配成功,它会打印出文件路径和匹配到的行,并打印出这行下面的1096行。这个函数的效率比较高,因为它使用了Python的文件读取和正则表达式匹配的优化。
阅读全文