从日志文件中快速查找行,向后搜索,然后逐行读取

时间:2012-03-25 15:41:25

标签: python file search

我在日志文件中有行,按时间顺序附加。例如,它可能是过去30天,30天前,29天前,28天前等数据。

我想以正常的时间顺序读取文件,但是从某一点开始(例如,开始7天前,阅读7天前的数据,然后6天前的数据,然后5天前的数据等)< / p>

一种方法是正常读取文件,但出于速度原因,我需要: - 从文件的末尾向后,指数地寻找,找到正确的开始点 - 然后,一旦我找到正确的点开始,按顺序逐行读取行

我无法解决这个问题。我开始修改答案: Most efficient way to search the last x lines of a file in python

有人可以提供帮助,或就更好的方法提供指导吗?

2 个答案:

答案 0 :(得分:2)

如果速度是一个问题,这可能意味着你多次这样做,或者必须在飞行中进行。因此,您可以构建一个索引文件,显示每天seek所需的位置,例如:

Day 1: 0
Day 2: 1048576
Day 3: 2097152
Day 4: 6291456
....

这将允许在构建索引后快速查找任何一天。

更新此索引的算法将从上一个已知日期的位置开始,向前阅读,每次到达新的一天时,都将其添加到索引中。

答案 1 :(得分:0)

由于线条是连续的,你可以非常快速地(log N的顺序)到达感兴趣的开始日,然后从那里向前读取。half-interval search。例如,如果日志文件有十亿行,那么最多需要30次读取才能找到感兴趣的开始日...