在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出现问题,我无法弄清楚如何重写它以返回。
答案 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)
进入下一行