在python 2.7中读取巨大的日志文件

时间:2018-03-16 09:51:55

标签: python

我有记录器文件......大小约为1GB。 我希望逐行读取数据直到某个关键字"转换到不同的模式"到达了,我也想要那个时间戳

我尝试了不同的代码,但它只提供日志标题和日志文件中的几行(文件采用txt格式)

下面是我试图打印前100行的代码

        i =1
    with open(sFile) as fileobject:
        for line in fileobject:
            print line
            i = i + 1
            if i > 100:
                break

这只打印标题和其他几行 有人可以帮忙解决这个问题吗

谢谢

2 个答案:

答案 0 :(得分:0)

这是你想要的吗?

导入时间

start = time.time()
with open(sFile) as fileobject:
    for i, line in enumerate(fileobject):
        if line.strip() == "transitioning to different mode":#or
        #if line.stratswith("transitioning to different mode"): # or
        #if "transitioning to different mode" in line:
            print(i)
            break
end = time.time()
print(end - start)

答案 1 :(得分:-1)

在加载大文件时,yield的使用将为您的任务提供内存效率:

def readfile(filename):
    with open(filename) as fileObject:
        for line in fileObject:
            yield(line)
        yield None # after the end of line

现在生成文件行如下:

lines = readfile(filename)
line = line.next():
while line:
    print (line)