枚举文件对象中的下一行,直到n或EOF

时间:2019-05-09 06:13:24

标签: python

在python <3.7中,我的代码具有一个生成器,该生成器贯穿文件对象的各行,直到达到固定值:

def parse_header(file_object):
    for index, line in enumerate(next(file_object) for x in range(max_value)):
        # do stuff to index and line

如果在max_value之前先到达EOF,则以前允许StopIteration。但是,使用PEP 479会导致RuntimeError出现问题,我无法弄清楚如何重写它以返回。

1 个答案:

答案 0 :(得分:2)

坦率地说,您的代码看起来很奇怪。

我愿意

def parse_header(file_object):
    for index, line in enumerate(file_object):
        if index == max_value:
            break
        print(index, line)

def parse_header(file_object):
    for index, line in zip(range(max_value), file_object):
        print(index, line)

两者都可以在Python 3.7.3中使用

使用parse_header(file_object)后,您仍然可以使用next(file_object)进入下一行