python – 什么是最有效的方式来获取文本文件的第一行和最后一行?

我有一个文本文件,每行包含一个时间戳。我的目标是找到时间范围。所有的时间是顺序的,所以第一行将是最早的时间,最后一行将是最近的时间。我只需要第一个和最后一行。什么是最有效的方式来获得这些行在python?

注意:这些文件的长度相对较大,每个大约1-2百万行,我必须这样做几百个文件。

最佳答案
docs for io module

with open(fname, 'rb') as fh:
    first = next(fh).decode()

    fh.seek(-1024, 2)
    last = fh.readlines()[-1].decode()

此处的变量值为1024:它表示平均字符串长度。我选择1024为例。如果你有一个平均线长度的估计,你可以使用那个值乘以2。

由于你不知道线长度的可能上限,显而易见的解决方案是循环文件:

for line in fh:
    pass
last = line

你不需要打扰二进制标志,你可以使用open(fname)。

ETA:由于你有很多文件要处理,你可以使用random.sample创建几十个文件的几个样本,并运行这些代码,以确定最后一行的长度。具有位置偏移的先验大值(假设1MB)。这将帮助您估计完整运行的值。

转载注明原文:python – 什么是最有效的方式来获取文本文件的第一行和最后一行? - 代码日志