我正在寻找在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
之类的插入器?
答案 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))