获取文件数据的前N行

时间:2018-12-18 20:12:36

标签: python python-3.x

我正在寻找在python文件中获取数据的前n行。要获得一行,我会做next(file),要获得很多我会做file.read(1024)''.join(file.readlines()[:1000]

在函数中执行此操作的最佳方法是什么?这是一个开始:

def get_first_n_rows(self, file, n=1):
    """
    Will return a string of the first N lines of data from the file.
    """
    s = ''
    with open(file, 'r') as f:
        for line in f:
            s += line
            if line == n: break
    return s

有没有更好的方法可以使用诸如next之类的插入器?

2 个答案:

答案 0 :(得分:3)

使用islice

from itertools import islice


def get_first_n_rows(self, file, n=1):
    """
    Will return a string of the first N lines of data from the file.
    """
    s = ''
    with open(file, 'r') as f:
        for line in islice(f, n):
            s += line
    return s

从链接的文档中:

  

制作一个迭代器,该迭代器返回可迭代对象中的选定元素。如果   start为非零,然后跳过iterable中的元素,直到   开始。之后,元素将连续返回   除非将步骤设置为高于一个步骤而导致   跳过了。

答案 1 :(得分:3)

def get_first_n_rows(self, file, n=1):
    with open(file) as fp:
        return "".join(next(fp) for _ in range(0, n))

,或者如果您需要行的列表,则:

def get_first_n_rows(self, file, n=1):
    with open(file) as fp:
        return list(next(fp) for _ in range(0, n))