我有大型日志文件(从100MB到2GB),包含一个(单个)特定的行,我需要在
Python程序中解析.我必须解析大约2万个文件.而且我知道所搜索的行是在文件的最后一行或最后15000个字节内.
因为这是一个重复的任务,我需要它尽可能快.最快的方法是什么?
我已经想到了4个策略:
>在Python中读取整个文件并搜索正则表达式(method_1)
>只读取文件的最后15,000个字节并搜索正则表达式(method_2)
>进行系统调用grep(method_3)
>在拖尾最后200行之后进行系统调用grep(method_4)
以下是我创建的测试这些策略的功能:
import os
import re
import subprocess
def method_1(filename):
"""Method 1: read whole file and regex"""
regex = r'\(TEMPS CP :[ ]*.*S\)'
with open(filename, 'r') as f:
txt = f.read()
match = re.search(regex, txt)
if match:
print match.group()
def method_2(filename):
"""Method 2: read part of the file and regex"""
regex = r'\(TEMPS CP :[ ]*.*S\)'
with