【发布时间】:2012-03-25 15:41:25
【问题描述】:
我在日志文件中有行,按时间顺序附加。例如,可能是最近 30 天的数据,从 30 天前开始,然后是 29 天前,然后是 28 天前,等等。
我想按正常的时间顺序读取文件,但是从某个点开始(例如,从 7 天前开始,读取 7 天前的数据,然后读取 6 天前的数据,然后读取 5 天前的数据等)
一种方法是正常读取文件,但是出于速度原因,我需要: - 从文件末尾以指数方式向后寻找,以找到正确的起点 - 然后,一旦我找到了正确的起点,就按正序逐行阅读
我无法让它工作。我首先在这里修改答案: Most efficient way to search the last x lines of a file in python
有人可以提供帮助或提供有关更好方法的指导吗?
【问题讨论】:
-
我会考虑将日志文件拆分为多个文件——每个文件都包含适当的持续时间,以便从一开始就进行搜索。 (也就是说,如果你有选择)
-
我认为向后读取 指数 没有多大意义,因为您的计划是从那时开始读取 整个 文件.以指数方式向后读取,再加上通过了所需点后的二进制搜索,将帮助您在 O(log N) 时间内找到所需的第一行,但这对您来说只是毫无意义的复杂性,因为它将花费您 O(N)是时候从那一点开始阅读这些行了。