如何有效地从文件中一次提取每一对连续的行?

时间:2016-07-29 14:04:42

标签: python-2.7 file-io

我的文本文件包含以下格式的n行文字:

line_1
line_2
line_3
.
.
.
line_n_minus_1
line_n

我希望提取每一对连续的行(即line_1line_2line_2line_3,依此类推,直到line_n_minus_1和{ {1}}),对每个提取的对执行某些操作,并在line_nline_n_minus_1之前继续执行此操作。我如何有效地为大文件做这件事?

这就是我的想法:

line_n

但是,我讨厌依赖from itertools import tee, izip def pairwise(iterable): "s -> (s0,s1), (s1,s2), (s2, s3), ..." a, b = tee(iterable) next(b, None) return izip(a, b) with open("file.txt","r") as f: list_of_lines = f.readlines() for i in pairwise(list_of_lines): # do something with the pair tuple i ,因为我可能会使用大文本文件。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

创建一个生成器,而不是使用readlines,而不必将整个文件加载到内存中:

.
.
.
with open('a.txt') as f:
    list_of_lines = (line for line in f)
    .
    .
    .