小编典典

如何在Python中一次读取文件N行?

python

我需要一次最多读取N行来读取一个大文件,直到EOF。在Python中最有效的方法是什么?就像是:

with open(filename, 'r') as infile:
    while not EOF:
        lines = [get next N lines]
        process(lines)

阅读 289

收藏
2020-12-20

共1个答案

小编典典

一种解决方案是列表理解和分片运算符:

with open(filename, 'r') as infile:
    lines = [line for line in infile][:N]

在这之后lines是行的元组。但是,这会将整个文件加载到内存中。如果您不希望这样做(即文件可能真的很大),则可以使用生成器表达式和isliceitertools包中的另一种解决方案:

from itertools import islice
with open(filename, 'r') as infile:
    lines_gen = islice(infile, N)

lines_gen 是一个生成器对象,它为您提供文件的每一行,并且可以在这样的循环中使用:

for line in lines_gen:
    print line

两种解决方案都最多提供N行(如果文件没有那么多,则更少)。

2020-12-20