首页 > 解决方案 > 枚举文件对象中的下一行,直到 n 或 EOF

问题描述

在 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

如果在 之前首先达到 EOF max_value,则 StopIteration 以前是允许的。但是,对于PEP 479,RuntimeError 会导致问题,我无法弄清楚如何将其重写为返回。

标签: python

解决方案


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

我会做

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)


推荐阅读