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

发布于 2021-01-29 19:34:52

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

with open(filename, 'r') as infile:
    while not EOF:
        lines = [get next N lines]
        process(lines)
关注者
0
被浏览
130
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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行(如果文件没有那么多,则更少)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看